我在 WinUI3 中有一个组合框,其中添加了两个项目手动:
<ComboBox Width="200" SelectedItem="{Binding MyProp, Mode=TwoWay}">
<ComboBoxItem Content="1"/>
<ComboBoxItem Content="2"/>
</ComboBox>
即使
MyProp
最初设置为“1”或“2”,组合框的文本也是空的。未选择任何项目。如果我在运行时作为用户选择这些项目之一,该值不会写回 MyProp
。
但是绑定和 ViewModel 工作正常,因为具有相同 TwoWay-Binding 的 TextBox 在两个方向上都工作正常:
<TextBox Text="{Binding MyProp, Mode=TwoWay}"></TextBox>
我是否也必须通过视图模型中的列表来绑定项目本身?希望在 XAML 中定义两个 ComboboxItem 就足够了。
由于您有
ComboBoxItem
作为项目,因此您需要定位 Content
属性。这应该有效:
<ComboBox
SelectedValue="{Binding MyProp, Mode=TwoWay}"
SelectedValuePath="Content">
<ComboBoxItem Content="1" />
<ComboBoxItem Content="2" />
</ComboBox>
但是您可以避免显式使用
ComboBoxItem
并使其变得简单:
<ComboBox
SelectedValue="{Binding MyProp, Mode=TwoWay}">
<x:String>1</x:String>
<x:String>2</x:String>
</ComboBox>