IsEnabled
이 false로 설정된 경우 아무 것도 선택하지 않은 것처럼 WPF ComboBox
을 공백으로 표시하는 다른 방법이 있다고 생각합니다. 언제나처럼 항상 WPF를 가지고있는 투쟁 인 ComboBox
에 대한 전체 컨트롤 템플릿을 다시 정의하지 않고이 작업을 수행하려고합니다. 누구나 ComboBox
제어 템플릿 전체를 재정의하는 것보다 더 좋은 해결책이 있다면 알려 주시기 바랍니다.비활성화되었을 때 아무 것도 표시하지 않는 WPF ComboBox
제가하려는 것은 "전체"옵션을 나타내는 CheckBox
이며,이 옵션을 선택하면 하나의 개별 항목 만 선택하는 데 사용되는 ComboBox
을 사용할 수 없습니다. 내 CheckBox
을 선택하면 사용자가 UI의 해당 상태에서 그 값이 의미가 없기 때문에 사용자가 ComboBox
에 남아있는 값을 볼 때 혼란 스러울 수 있습니다.
또 다른 요구 사항은 나는 사용자가 "모두"CheckBox
선택 취소 경우에 previuosly 선택한 항목을 유지하고자하기 때문에 솔루션이 ComboBox
의 SelectedValue
, SelectedIndex
, 또는 SelectedItem
값을 수정할 수 없다는 것입니다. 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>
내가 잘못 했더라도 불행히도 내 테스트에서 작동하지 않았습니다. ItemTemplate을 지정하는 것보다 단순함을 더 좋아했습니다. – jpierson
이 방법이 실제로 가능한지 알아 내려고 노력하면서 MSDN 포럼에서이 게시물을 보았습니다.이 게시물은 꽤 재미있을 것 같습니다. http://social.msdn.microsoft.com/Forums/en/wpf/thread/4c359378-ba98-42a1-a468-0f18f5626fcc – jpierson