wpf 组合框:将 selectedindex 设置为 -1 不会将 Text 属性设置为 string.empty



我正在尝试将 selectedIndex 设置为 -1,这样它就不会在组合框 Text 属性上显示任何选择。

在我的 xaml 中,这就是我拥有组合框的方式

<ComboBox
x:Name="MyFooComboBox"
Margin="0,0,0,5"
IsEditable="False"
ItemsSource="{Binding MyFooCollection}"
SelectedIndex="{Binding FooSelectionIndex,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}">
<ComboBox.Style>
<Style TargetType="ComboBox">
<Style.Triggers>
<Trigger Property="SelectedIndex" Value="-1">
<Setter Property="Text" Value=""/>
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>

我看到的方法是,如果 SelectedIndex 设置为 -1,那么我的组合框的文本属性应该是空的。在我的 ViewModel 中,我设置为在我的应用程序不再需要 FooSelectionIndex 后将我的 FooSelectionIndex 默认为 -1。当我将其设置为 -1 时,我设置了断点,我可以看到它是 -1 并且它引发的属性发生了变化。但我仍然看到显示上一个选择的文本。我做错了什么?

MyFooComboBox.SelectedIndex设置为-1应清除选择。这有效:

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = this;
MyFooCollection = Enumerable.Range(1, 10).ToList();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
MyFooComboBox.SelectedIndex = -1;
}
}

XAML:

<ComboBox
x:Name="MyFooComboBox"
IsEditable="False"
ItemsSource="{Binding MyFooCollection}"
SelectedIndex="{Binding FooSelectionIndex}" />
<Button Content="Clear" Click="Button_Click_1" />

如果设置了FooSelectionIndex源属性,则定义此属性的类必须实现INotifyPropertyChanged才能清除所选内容。

不应在代码或 XAML 标记中显式设置ComboBoxText属性。

最新更新