【发布时间】:2020-05-13 15:07:16
【问题描述】:
我已成功绑定 ItemsSource,ComboBox 让我可以选择每个选项,但我看不到选择了哪个选项。 ComboBox 只是空白。 XAML 代码:
<ComboBox
Name="Position"
Grid.Row="5"
SelectedValue="{Binding Position}"
ItemsSource="{Binding Positions}"
Style="{StaticResource MaterialDesignComboBox}"
Margin="15,10,15,10"
FontSize="12"/>
尝试了基本的 ComboBox(非材料设计),结果相同。
如果您需要,我会提供更多代码,但到目前为止,该控件似乎刚刚损坏,无法正常工作。我可能遗漏了一些如何正确设置的小细节。
编辑
视图模型:
public class WindowAddEmployeesViewModel : EmployeesViewModel, INotifyPropertyChanged
{
public ObservableCollection<PositionsViewModel> Positions { get; set; }
new public event PropertyChangedEventHandler PropertyChanged;
}
基类包含 FirstName、LastName、Position 等内容。INotifyPropertyChanged 未实现,因为 Fody.PropertyChanged 为我做了。
PositionViewModel:
public class PositionsViewModel : INotifyPropertyChanged
{
public string Position { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public override string ToString()
{
return $"{Position}";
}
}
编辑
将IsEditable 切换为True 使其可见,但我不希望用户能够对其进行编辑。
【问题讨论】:
-
请分享您的视图模型(或表示组合框绑定的数据上下文的类)。你也设置了
DisplayMemberPath和SelectedValuePath吗? -
@PavelAnikhouski
DisplayMemberPath和SelectedValuePath尚未设置。在所有指南中,我发现它默认工作。对我来说它是空白的。用户必须记住点击了什么。这很糟糕。 -
选中的
Position在哪里定义? -
@PavelAnikhouski 正如我在
EmployeesViewModel中所说的那样。这是你能想象到的最通用的类,所以我决定不提供这么多代码。 -
问题是您是否设置了 Position 对象,是否使用列表中的 Position 进行设置?如果不是,您可能必须覆盖 Equals 和 GetHashCode si,ComboBox 可以识别您要选择的项目