在我的 View 模型上,我有一个 int
属性,我想使用 ComboBox 公开它以进行编辑,并使用一组有限的选项,例如 16、8、4 和 2。有没有一种方法可以在 XAML 中指定选项,同时仍然将值绑定(bind)回 View 模型?我想做这样的事情:
<ComboBox SelectedValue="{Binding MyIntProperty}">
<ComboBoxItem>16</ComboBoxItem>
<ComboBoxItem>8</ComboBoxItem>
<ComboBoxItem>4</ComboBoxItem>
<ComboBoxItem>2</ComboBoxItem>
</ComboBox>
我知道我可以组装一个 List<int>
在代码中并将其设置为 ItemsSource,但我希望有一种方法可以做到这一点,它不涉及 View 模型中公开在代码中创建的集合的额外属性。
最佳答案
您可以完全按照示例中的方式指定您的选择。为了使其正常工作,您缺少的是 SelectedValuePath 属性。没有它,SelectedValue 将与 SelectedItem 相同。通过在 ComboBox 中设置 SelectedValuePath="Content",您可以指定您的 SelectedValue 绑定(bind)只绑定(bind)到 SelectedItem 的一部分,在本例中是您指定为每个 ComboBoxItem 中的内容的 Int 内容。
这里有一个小演示,还将值绑定(bind)到文本框,您可以在其中设置项目并通过 SelectedValue 绑定(bind)(反之亦然)在 ComboBox 中看到它的反射(reflect)。
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Set Value:" />
<TextBox Text="{Binding MyIntProperty, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Select Value:" />
<ComboBox SelectedValue="{Binding MyIntProperty}" SelectedValuePath="Content">
<ComboBoxItem>2</ComboBoxItem>
<ComboBoxItem>4</ComboBoxItem>
<ComboBoxItem>6</ComboBoxItem>
<ComboBoxItem>8</ComboBoxItem>
<ComboBoxItem>16</ComboBoxItem>
</ComboBox>
</StackPanel>
</StackPanel>
关于c# - 具有 XAML 中定义的选项的数据绑定(bind) WPF ComboBox?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1917996/