falseに設定さComboBox
れている場合、何も選択されていないかのようにWPFを空白で表示するさまざまな方法を考えています。IsEnabled
いつものように、私はこれを実行しようとしていますが、コントロールテンプレート全体を再定義する必要はありません。ComboBox
これは、常にWPFで苦労しています。コントロールテンプレート全体を再定義するよりもエレガントなソリューションがあればComboBox
、私に知らせてください。
私がやろうとしている理由はCheckBox
、「すべて」オプションを表すがあり、チェックするとComboBox
、単一の個別のアイテムのみを選択するために使用されるを無効にするためです。myCheckBox
をチェックするとComboBox
、UIのその状態ではその値が意味を持たないため、値が残っていることをユーザーが混乱させることがあります。
もう1つの要件は、ユーザーが「すべて」のチェックを外した場合に、以前に選択したアイテムを保持したいので、ソリューションがSelectedValue
、、、SelectedIndex
またはSelectedItem
の値を変更できないことです。ComboBox
CheckBox
HCLの回答に基づく解決策:
<ComboBox IsEnabled="{Binding ElementName=myCheckBox, Path=IsChecked}"
ItemsSource="{Binding Path=MyItems}"
SelectedValue="{Binding Path=MySelectedItem}">
<ComboBox.ItemTemplate>
<DataTemplate>
<ContentControl x:Name="content" Content="{Binding MyItemDescription}" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=ComboBox}, Path=IsEnabled}"
Value="False">
<Setter TargetName="content"
Property="Visibility"
Value="Hidden" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>