我有这样的代码:
<ListBox ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock>Some Other Stuff Here</TextBlock>
<ComboBox ItemsSource="{Binding}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
问题是,每次外部ListBox.SelectedItem发生更改时,其中的ComboBox都会将其SelectedIndex更改为-1。这意味着如果我点击“其他东西在这里”(除非它所在的ListBoxItem被选中),所有组合框的选择都会被清除。
我如何克服这个问题? THX!
答案 0 :(得分:0)
大概你的组合框绑定到像ObservableCollection这样的东西 - 尝试公开ICollectionView的实例:
class DataSource
{
// ...
public ObservableCollection<string> MyData { get; private set; }
public ICollectionView MyDataView
{
get
{
return CollectionViewSource.GetDefaultView(this.MyData);
}
}
}
然后你可以用你的组合框绑定:
<ComboBox ItemsSource="{Binding MyDataView}" IsSynchronizedWithCurrentItem="True" />
这意味着每个数据源的“选定项目”存储在ICollectionView对象中,而不是存储在组合框中,这应该意味着它在ListBox SelectedItem更改时保持不变