WPF如何设置与项目列表不同的所选项目(组合框)?

时间:2018-01-18 15:40:57

标签: wpf xaml combobox

我有一个带有组合框列的数据网格视图。是否可以在下拉列表中使用该值但是在选择一个项目以获取该单元格中该项目的键后?

E.g。我的键值对:1 = Car,2 = Plane,3 = Submarine ......下拉列表应显示Car,Plane,Submarine ......以及何时" Plane"仅被选中" 2"是在牢房里。

有些想法吗?

3 个答案:

答案 0 :(得分:1)

我认为你可以简单地使用ItemTemplate来显示你想要的属性:

<ComboBox>
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{Binding Value}" />
            </StackPanel>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

可替换地:

<ComboBox DisplayMemberPath="Value" />

答案 1 :(得分:0)

使用DisplayMemberPath属性指定要显示的属性的名称作为组合框项目的文本。

使用SelectedValuePath属性指定要用于组合框的SelectedValue的属性的名称

<ComboBox
    DisplayMemberPath="Value"
    SelectedValuePath="Key"
    />

因此,如果你有一个项目{ Key = 2, Value = "Plane" },用户将在组合框项目中看到“Plane”,当他选择时,ComboBox的SelectedValue属性将返回2,而组合框的SelectedItem属性将返回整个选定对象{ Key = 2, Value = "Plane" }

如果你想以某种特殊或复杂的方式显示组合框项目,那么

ComboBox.ItemTemplate是合适的,但如果你想要的只是属性的字符串值,DisplayMemberPath可以简单而可读地完成工作。

答案 2 :(得分:0)

也许我解释了我的意思但是经过几个小时的努力之后我才找到了解决方案:

           <ComboBoxColumn  DisplayMemberPath="Value" SelectedValueMemberPath="Key"  DataMemberBinding="{Binding myCollection, Mode=TwoWay}" >
                <common:FWGridViewComboBoxColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Key}" />
                    </DataTemplate>
                </common:FWGridViewComboBoxColumn.CellTemplate>
            </ComboBoxColumn>

这正是我所寻找的。 感谢S. Spindler,你给了我正确的指导方向。