WPF 多列组合框

标签 wpf combobox multiple-columns

我有以下用于多列组合框的数据模板:

<DataTemplate x:Key="ShipViaKey">
    <Grid Height="23" Width="Auto" ShowGridLines="False">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="100"/>
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>

        <TextBlock Grid.Column="0" Text="{Binding Code}"/>
        <TextBlock Grid.Column="1" Text="{Binding Carrier}"/>
    </Grid>
</DataTemplate>

组合框定义如下:

<ComboBox Grid.Row="0" Grid.Column="1" x:Name="CboShipVia" SelectedValue="{Binding FkCarrier, Mode=TwoWay}" SelectedValuePath="PkCarrier" IsEnabled="{Binding HasData}" ItemTemplate="{StaticResource ShipViaKey}"/>

一切都很好;除了我只想在组合框中显示所选项目的“代码”,而不是两个值。有办法做到这一点吗?

最佳答案

代替ItemTemplate,使用ItemContainerStyle:

<ComboBox.ItemContainerStyle>
    <Style TargetType="ComboBoxItem">
        <Setter Property="ContentTemplate">
            <Setter.Value>
                <DataTemplate>
                    <Grid Height="23" Width="Auto" ShowGridLines="False">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="100"/>
                            <ColumnDefinition Width="*"/>
                        </Grid.ColumnDefinitions>

                        <TextBlock Grid.Column="0" Text="{Binding Code}"/>
                        <TextBlock Grid.Column="1" Text="{Binding Carrier}"/>
                    </Grid>
                </DataTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</ComboBox.ItemContainerStyle>

此外,将 DisplayMemberPath 设置为 Code 属性。

关于WPF 多列组合框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23893348/

相关文章:

wpf - 显示许多ObservableCollection成员的ComboxEdit

WPF:列表框,将所选项目居中

c# - IMul​​tiValueConverter - INotifyPropertyChanged

python - 使用组合框禁用/启用小部件?

javascript - 当商店未加载结果时,Extjs 组合框不断重置文本值

sqlite - SQL/SQLite : Left join only if multiple columns match, 为连接结果选择字段

ms-access - SQL 两个日期时间差多个条件

c# - 单元测试 wpf(禁用消息框)

wpf - 我可以使 WPF DataGridRow 不可选择吗?

sql - 通过一个查询选择独立的不同项