我不太确定如何处理这个问题。我正在使用一堆带有值下拉列表的组合框,我们也允许用户设置属性。 (即货币 =“美元、加元、欧元”)。
有时,当我们加载数据时,我们会发现货币不在我们的列表中,例如“AUD”。在这种情况下,我们仍然希望组合框显示加载的值,并且当前选择的货币应保持为“澳元”,除非用户选择更改它,在这种情况下,他们唯一的选择仍然是“美元、加元、欧元”。
我的问题是,一旦控件变得可见,ComboBox 就会调用我的 SelectedCurrency 属性的 setter 并将其设置为 null
,大概是因为当前值“AUD”不在这是 list 。如何在不让用户在“货币”字段中键入他们想要的任何内容的情况下禁用此行为?
最佳答案
将 IsEditable="True"
、IsReadOnly="True"
和您的 SelectedItem
设置为您想要保存所选对象的任何对象项目
<ComboBox ItemsSource="{Binding SomeCollection}"
Text="{Binding CurrentValue}"
SelectedItem="{Binding SelectedItem}"
IsEditable="True"
IsReadOnly="True">
IsEditable
允许 Text
属性显示不在列表中的值
IsReadOnly
使 Text
属性不可编辑
SelectedItem
存储选中的项目。在用户选择列表中的项目之前它将为 null
,因此在您的 SaveCommand
中,如果 SelectedItem == null
则使用 保存到数据库时使用 CurrentValue
而不是 SelectedItem
关于c# - 防止 ComboBox 在不在绑定(bind)列表中时将 selectedValue 设置为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9738300/