繁体   English   中英

数据绑定的WPF ComboBox不显示选定的值

[英]Data-bound WPF ComboBox not displaying selected value

我有一个ComboBox,绑定到DataTable。 ComboBox显示从DataTable的“wellId”列中提取的值列表。 ComboBox的样式也是这样我只需在DataTable中添加一个虚拟行并将wellId字段设置为“(settings)”即可将自定义项插入到列表中。

<ComboBox IsEditable="True" Name="comboWell" ItemsSource="{Binding}">
    <ComboBox.ItemContainerStyle>
        <Style TargetType="{x:Type ComboBoxItem}">
            <Setter Property="Content" Value="{Binding wellId}" />
            <Style.Triggers>
                <DataTrigger Binding="{Binding wellId}" Value="(settings)">
                    <Setter Property="Content" Value="Customize..." />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>

在大多数情况下,这很有效。 它显示列表,并且可以在下拉列表中选择所有项目(包括虚拟项目)。

但是,从列表中选择项目后,无论是真实项目还是虚拟项目,ComboBox都不会正确显示所选项目。 它不是显示下拉列表中显示的相同值(DataTable中的“wellId”列),而是显示字符串“ System.Data.DataRowView ”。 无论我选择什么,它总是显示相同的东西。

如果我专门将ComboBox上的DisplayMemberPath设置为“wellId”,则它会正确显示所选项目。 但是,这会混淆我应用的所有其他样式,导致下拉列表中填充空白条目。

如何让ComboBox正确显示所选项目?

更改您的ComboBox以设置ItemTemplate而不是ItemContainerStyle ,并删除IsEditable=True 如果IsEditable=TrueSelectedItem将显示在TextBox中,如果TextBox.Text绑定到某个项目,它将显示该项目的.ToString()

<ComboBox Name="comboWell" ItemsSource="{Binding }">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <ContentControl>
                <ContentControl.Style>
                    <Style TargetType="{x:Type ContentControl}">
                        <Setter Property="Content" Value="{Binding wellId}" />
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding wellId}" Value="(settings)">
                                <Setter Property="Content" Value="Customize..." />
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </ContentControl.Style>
            </ContentControl>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM