我有Combobox
这样的设置:
<ComboBox ItemsSource={Binding FilteredGroups} Name="cbo"/>
每次FilteredGroups
对象更改时,SelectedIndex
都会变为0,但我需要它转到-1。我目前的解决方法如下,但我很好奇是否有更好的方法来做到这一点:
ViewModel.OnPropertyChanged += (o,e) =>
{
if(e.PropertyName == "FilteredGroups")
_resetAdd = true;
}
cboOnSelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (_resetAdd && e.AddedItems.Count > 0)
cbo.SelectedIndex = -1;
else if(!_resetAdd && e.AddedItems.Count > 0)
//Normal selection logic
_resetAdd = false;
}
我试图在XAML中设置SelectedIndex=-1
,并绑定到我在VM上的一个对象,我在组更改期间将其设置为null。
如果有所不同,我也在使用ItemTemplate吗?
答案 0 :(得分:0)
您可以在更改时听取任何DependencyProperty
并从那里进行设置。
DependencyPropertyDescriptor.FromProperty(ItemsControl.ItemsSourceProperty, typeof (ComboBox)).AddValueChanged(cb, (s, e) => { cb.SelectedIndex = -1; });
不要忘记调用RemoveValueChanged
以避免内存泄漏。