Combobox DropDownOpened事件

时间:2011-04-21 14:22:24

标签: c# wpf combobox event-handling

我在列表视图中有一个组合框。并且列表视图中的不同项(行)需要显示(基于某些条件)相应组合框中的3组组合框项中的一组。现在,我通过使用绑定到List<string>的3个不同属性的3个数据模板来实现此目的。我在组合框的DropDownOpened事件期间连接了相应的数据模板。

我面临的问题是我每次都要点击两次组合框才能让它掉线。我做了一个Debug.WriteLine(),看看我的第一次点击是否完成了选择数据模板的工作,我发现确实如此。但只是它在第一次点击时不会下降。

我想这是因为我在组合框下拉弹出窗口后更改了数据模板,因此只有在我执行第二次单击后才会再次刷新其结果。

我的问题是,是否有其他方法可以完成我正在尝试的内容,或者我是否必须在现有的DropDownOpened事件处理程序中进行任何更改。

请建议。

编辑:我正在使用WPF

由于

1 个答案:

答案 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>