web-dev-qa-db-ja.com

チェックボックスのサイズを変更するWPF

WPFでより大きなチェックボックスを作成したいと思います。

コントロールテンプレートを作成する必要があることを発見しました。その一例がここにあります: http://msdn.Microsoft.com/en-us/library/ms752319.aspx

そのコードを使用すると、チェックボックスはデフォルトの外観に似ていません。境界線の幅と高さの属性を変更するだけです。

デフォルトとまったく同じように見えるコントロールテンプレートが必要です。そこから、幅と高さを変更するだけです。どこで見つけられるか誰か知っていますか?またはより良いアプローチ?

20
astronought

これはどう?

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

整数値が希望どおりでない場合は、ScaleXとScaleYにdouble値を使用できます。

51
Matthew
4
d.moncada

デフォルトのControlTemplatesは MSDN上 にあります(Default WPF Themesリンクを参照)。

必要な テーマコントロール を参照するために、必ずそれぞれのテーマ名前空間をxamlファイルに追加してください。

<theme:BulletChrome Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    RenderMouseOver="{TemplateBinding IsMouseOver}"
                    RenderPressed="{TemplateBinding IsPressed}"
                    IsChecked="{TemplateBinding IsChecked}"/>

一般的に指定できるかどうかはわかりませんが、参照も追加する必要があるかもしれません。

ここでの問題は、コントロールが境界線のサイズをカプセル化しているため、実際には境界線のサイズを指定できないことです。

3
H.B.

私が見つけた最善の解決策は、それをViewBoxでラップすることです。

<Viewbox Height="46" HorizontalAlignment="Left" >
    <CheckBox Content="Some Content"/>
</Viewbox>
0
Bosko Popovic

チェックボックスのビジュアルツリーを使用できます。必要な要素が存在する場合は、幅と高さを明示的に設定することにより、実行時に要素を変更します。 Peter Bloisのスヌープまたは同等のものを使用して、FindNameでアクセスできる名前付き要素があるかどうかを確認します。そうでない場合は、推測して(たとえば、一部のスタイルには2つの境界要素があり、1つを選択する必要があります)、ビジュアルツリーを明示的に歩く必要があります。

探している要素が見つからない場合、コードは何も実行しないことに注意してください。

0
Ed Bayiates