0

UniformGridのセルのチェックボックスを中央に配置して拡大したい。 私は多くの方法でそれをやろうとしました:

<UniformGrid>
        <CheckBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
                  HorizontalContentAlignment="Center" VerticalContentAlignment="Center" />
        <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" />
        <CheckBox HorizontalAlignment="Center" VerticalAlignment="Center" ClipToBounds="True" />
        <CheckBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ClipToBounds="True" />

  • 選択したセル(0、0)

    ユニフォームグリッド
  • 選択したセル(1、0)

    ユニフォームグリッド

しかし、セル内のこれらのチェックボックスを同時に拡大(セル(0,0)のように)および中央揃え((1,0)のように)したいので、満足できません。

どうすればいいですか?


[編集1]

小さなチェックをクリックする必要がなく、代わりにセル全体をクリックできるようにしようとしています。

[編集2]

実際、これらのチェックボックスをC#コードから追加したいので、XAMLで作成されたソリューションがC#言語に「移植可能」でない場合は、あまり役に立ちません。

4

2 に答える 2

5

この単純なマークアップをデフォルトのストレッチ値で使用する場合:

<UniformGrid>
    <CheckBox Content="This is a checkbox" />
    <CheckBox Content="This is a checkbox" />
    <CheckBox Content="This is a checkbox" />
    <CheckBox Content="This is a checkbox" />
</UniformGrid>

UniformGridの各セルの任意の場所をクリックして、そのセルのチェックボックスをオンまたはオフにすることができます。

機能的には、これはあなたが望むことをしています。チェックボックスの外観を変更する場合は、ControlTemplateを使用できます。

チェックボックスのサイズを変更せず、セルをクリックしてチェックできるようにしながら視覚的に中央に配置したい場合は、次のようなテンプレートを使用できます。

<CheckBox>
    <CheckBox.Template>
        <ControlTemplate TargetType="{x:Type CheckBox}">
            <Grid Background="Transparent">
                <CheckBox IsChecked="{TemplateBinding Property=IsChecked}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
            </Grid>
        </ControlTemplate>
    </CheckBox.Template>
</CheckBox>

編集:

実行時にリソースとして適用するには、適切なスコープのリソースセクションにXAMLを記述します。1つのコントロールでのみ必要な場合は、ローカルのリソースディクショナリに配置できます。グローバルにアクセスする場合は、次のようにApp.xamlに配置します。

<Application.Resources>
    <ControlTemplate x:Key="StretchedCheckBox" TargetType="{x:Type CheckBox}">
        <Grid Background="Transparent">
            <CheckBox IsChecked="{TemplateBinding Property=IsChecked}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
        </Grid>
    </ControlTemplate>
</Application.Resources>

キー「StretchedCheckBox」があることに注意してください。これで、これを使用してコードに適用できます。

ControlTemplate stretchedTemplate = FindResource("StretchedCheckBox") as ControlTemplate;

CheckBox chkBox = new CheckBox();
chkBox.Template = stretchedTemplate;
于 2012-06-13T15:41:54.700 に答える
1

CheckBoxサイズはコントロールテンプレートで事前に決定されているので、そのようなサイズに影響を与えることはできないと思います

1つの解決策は、を使用しLayoutTransformてチェックボックスを拡大することです。

<CheckBox>
    <CheckBox.LayoutTransform>
        <ScaleTransform ScaleX="5" ScaleY="5" />
    </CheckBox.LayoutTransform>
</CheckBox>

これにより、チェックボックスの横のテキストとチェックボックス自体が拡大縮小され、拡大縮小の方法によっては見栄えがよくない場合があることに注意してください。

別の代替ソリューションは、MSDNからサンプルのCheckBoxテンプレートをコピーし、より大きなものを作成することです。CheckBox

于 2012-06-13T15:44:17.837 に答える