我有一个Combobox,只要选中复选框,我想清除它。 我该怎么做呢?
我的组合框:
<ComboBox
DisplayMemberPath="KommuneNavn"
SelectedValuePath="KommuneNr"
ItemsSource="{Binding KommuneNavne}"
SelectedValue="{Binding kommuneNr, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Margin="3"
IsEnabled="{Binding IsUdenlandskAdresse, Converter={StaticResource BooleanNotConverter}}"/>
我的Checkbox绑定到我的viewmodel中的布尔属性IsUdenlandskAdresse
:
<CheckBox Margin="3" IsChecked="{Binding IsUdenlandskAdresse, Mode=TwoWay}"/>
因此当IsUdenlandskadresse
设置为true时,我希望组合框变为空白。
答案 0 :(得分:3)
如果我理解您要正确执行的操作,则在禁用时,您希望ComoBox为空(或至少看起来为空白)。最简单的方法是在使用样式禁用ComboBox时将Foreground
(用于文本的颜色)更改为Transparent
。这样您就不需要任何代码隐藏,可以在其他ComboBox上重用该行为,如果重新启用它,您不会丢失选择。
<Style TargetType="ComboBox">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>
简约演示:
<ComboBox Height="Auto" IsEnabled="{Binding ElementName=cckEnabled, Path=IsChecked}">
<ComboBox.Style>
<Style TargetType="ComboBox">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="Transparent"/>
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
<ComboBoxItem>Entry 1</ComboBoxItem>
<ComboBoxItem>Entry 2</ComboBoxItem>
<ComboBoxItem>Entry 3</ComboBoxItem>
<ComboBoxItem>Entry 4</ComboBoxItem>
<ComboBoxItem>Entry 5</ComboBoxItem>
</ComboBox>
<CheckBox Name="cckEnabled" Content="Enabled"/>
答案 1 :(得分:0)
清除您的ComboBox(从ItemsSource中移除所有可选择的项目):
public bool IsUdenlandskAdresse
{
get { return _isUdenLandskAdresse; }
set
{
SetProperty(ref _isUdenLandskAdresse, value);
// this will clear your collection if value=true
if(value)
KommuneNave.Clear();
}
}
如果要取消选择SelectedItem:
public bool IsUdenlandskAdresse
{
get { return _isUdenLandskAdresse; }
set
{
SetProperty(ref _isUdenLandskAdresse, value);
// just set the SelectedItem BindingTarget to null
if(value)
kommunenr = null;
}
}