【发布时间】:2020-05-19 11:42:00
【问题描述】:
完全相同的代码适用于字符串集合,但它会因整数而失败。
我的代码(删除了不必要的部分以使事情清晰):
XAML:
<ComboBox Name="Id"
Grid.Row="5"
SelectedItem="{Binding Id}"
ItemsSource="{Binding Ids}"
Style="{StaticResource MaterialDesignComboBox}"
IsEnabled="True"
IsEditable="False"
IsReadOnly="True"/>
视图模型:
class ViewModel : BaseViewModel, INotifyPropertyChanged
{
public ObservableCollection<int> Ids { get; set; }
new public event PropertyChangedEventHandler PropertyChanged;
}
public class BaseViewModel : INotifyPropertyChanged
{
public int Id { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
}
(代码和名称已调整以代表问题,同时忽略了不必要的信息)
列表已填充,我可以选择其中一个选项,但选择的选项是空白的。用户无法分辨已选择的内容。任何建议这里有什么问题?
编辑
将每个整数解析为字符串(并将集合更改为字符串)解决了这个问题。我不知道,看来 ComboBox 不喜欢整数。
【问题讨论】:
-
请发布您的 ViewModel 的完整类定义,包括您尝试绑定的 Id 属性
-
您的
Id属性在哪里以及如何定义? -
啊,我忘了显示基本视图模型。 ID 已定义。
-
您只需要实现一次 INotifyPropertyChanged - 在您的 BaseViewModel 类中,而不是在每个 ViewModel 类中
-
另外,您的属性设置器不会触发 PropertyChanged 事件。