我在列表视图中有一个组合框。并且列表视图中的不同项(行)需要显示(基于某些条件)相应组合框中的3组组合框项中的一组。现在,我通过使用绑定到List<string>
的3个不同属性的3个数据模板来实现此目的。我在组合框的DropDownOpened
事件期间连接了相应的数据模板。
我面临的问题是我每次都要点击两次组合框才能让它掉线。我做了一个Debug.WriteLine()
,看看我的第一次点击是否完成了选择数据模板的工作,我发现确实如此。但只是它在第一次点击时不会下降。
我想这是因为我在组合框下拉弹出窗口后更改了数据模板,因此只有在我执行第二次单击后才会再次刷新其结果。
我的问题是,是否有其他方法可以完成我正在尝试的内容,或者我是否必须在现有的DropDownOpened
事件处理程序中进行任何更改。
请建议。
编辑:我正在使用WPF
由于
答案 0 :(得分:1)
是否可以选择使用样式来设置项目? e.g。
<ComboBox>
<ComboBox.Style>
<Style TargetType="{x:Type ComboBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding SomeConditionalProperty}"
Value="SomeConditionalValue">
<Setter Property="ItemsSource" Value="{BindingToFindRightItems}"/>
</DataTrigger>
<DataTrigger Binding="{Binding SomeConditionalProperty}"
Value="AnotherValue">
<Setter Property="ItemsSource" Value="{BindingToFindRightItemsForAnotherValue}"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>