WPFでより大きなチェックボックスを作成したいと思います。
コントロールテンプレートを作成する必要があることを発見しました。その一例がここにあります: http://msdn.Microsoft.com/en-us/library/ms752319.aspx
そのコードを使用すると、チェックボックスはデフォルトの外観に似ていません。境界線の幅と高さの属性を変更するだけです。
デフォルトとまったく同じように見えるコントロールテンプレートが必要です。そこから、幅と高さを変更するだけです。どこで見つけられるか誰か知っていますか?またはより良いアプローチ?
これはどう?
<CheckBox>
<CheckBox.LayoutTransform>
<ScaleTransform ScaleX="2" ScaleY="2" />
</CheckBox.LayoutTransform>
</CheckBox>
整数値が希望どおりでない場合は、ScaleXとScaleYにdouble値を使用できます。
デフォルトのControlTemplatesは MSDN上 にあります(Default WPF Themes
リンクを参照)。
必要な テーマコントロール を参照するために、必ずそれぞれのテーマ名前空間をxamlファイルに追加してください。
<theme:BulletChrome Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
RenderMouseOver="{TemplateBinding IsMouseOver}"
RenderPressed="{TemplateBinding IsPressed}"
IsChecked="{TemplateBinding IsChecked}"/>
一般的に指定できるかどうかはわかりませんが、参照も追加する必要があるかもしれません。
ここでの問題は、コントロールが境界線のサイズをカプセル化しているため、実際には境界線のサイズを指定できないことです。
私が見つけた最善の解決策は、それをViewBoxでラップすることです。
<Viewbox Height="46" HorizontalAlignment="Left" >
<CheckBox Content="Some Content"/>
</Viewbox>
チェックボックスのビジュアルツリーを使用できます。必要な要素が存在する場合は、幅と高さを明示的に設定することにより、実行時に要素を変更します。 Peter Bloisのスヌープまたは同等のものを使用して、FindNameでアクセスできる名前付き要素があるかどうかを確認します。そうでない場合は、推測して(たとえば、一部のスタイルには2つの境界要素があり、1つを選択する必要があります)、ビジュアルツリーを明示的に歩く必要があります。
探している要素が見つからない場合、コードは何も実行しないことに注意してください。