MaterialDesignのComboBox HasClearButtonの大きさを変更する
はじめに
WPF MaterialDesignは便利なのですが、時々表示が大きすぎたりとやや使い勝手に癖があります。
ComboBoxを使用した際に、選択したものをクリアするために、クリアボタンが表示させることができます。
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
<ComboBox x:Name="GenderComboBox" Width="60"
materialDesign:TextFieldAssist.HasClearButton="True"
ItemsSource="{Binding ItemsGenderValue}"
Text="{Binding Gender.Value, UpdateSourceTrigger=PropertyChanged}"
materialDesign:HintAssist.Hint="性別"/>
ただ、このクリアボタンが大きくて、見栄えが良くありません。もう少し小さいほうがいいし、押し間違いしないかと思います。
解決方法
xaml側で何とかできないかと考えましたが、スタイルをかなりいじることになりそうで面倒でした。
ということで、簡単な解決方法ですが、コードビハインドでフォームロード時に変更してしまえというものです。
まず、クリアボタンですが、これはComboBoxのPART_ClearButtonで定義されています。
これをScaleTransformでサイズを指定します。
ただ、これだとちょっと位置ずれが起きたので、クリアボタンのpaddingで調整します。
実際、標準のスタイルでもpaddingで位置調整していたので、この対策で問題ないかと思います。
で、以下が、対策後のコードとなります
ちなみに、この例では、Windowではなく、Prismを使用している関係でUserControlとなっています。
private void UserControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
// ComboBoxのClearButtonを取得します
Button genderComboBoxclearButton = GenderComboBox.Template.FindName("PART_ClearButton", GenderComboBox) as Button;
// ComboBoxのClearButtonの大きさを少し小さめにします
ScaleTransform st = new ScaleTransform(0.75,0.75);
genderComboBoxclearButton.RenderTransform = st;
// ComboBoxのClearButtonの表示位置を調整します
genderComboBoxclearButton.Padding = new System.Windows.Thickness(2, 4, -5, -4);
}
ほんのちょっとの修正ですが、思ったより見やすくなったのではないかと思います。
Author And Source
この問題について(MaterialDesignのComboBox HasClearButtonの大きさを変更する), 我々は、より多くの情報をここで見つけました https://qiita.com/mkuwan/items/8e15cc2558b588def845著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .