我有一个继承自ReactiveObject
的视图模型,其中包含数据网格中显示的项目列表。每个项目都包含需要在该数据网格的每一行中的Combobox中显示的项目的子列表。以下是我的视图模型中的属性:
private ReactiveList<Material> _materials;
public ReactiveList<Material> Materials
{
get => _materials; set => this.RaiseAndSetIfChanged(ref _materials, value);
}
以下是Material
类的内容:
public class Material
{
public string StockCode { get; set; }
public List<Bin> Bins { get; set; }
public Bin SelectedBin { get; set; }
public Material() { Bins = new List<Bin>(); }
public class Bin
{
public string Name { get; set; }
}
}
现在,我的XAML中有一个按钮,它调用一个反应命令,从SQL数据库(以及每个{_materials
的嵌套Bins
属性填充视图模型中的Material
列表。 1}} item)我在ChangeTrackingEnabled = true
列表中有_materials
,它在VM的构造函数中设置(未显示)。我的数据网格中的所有内容都显示正常,但应该显示Bins
列表的组合框完全为空。这是我的XAML的摘录:
<DataGrid x:Name="MaterialGrid"
Margin="0 8 0 0"
ItemsSource="{Binding Materials}"
SelectedItem="{Binding SelectedMaterial}"
CanUserSortColumns="True"
CanUserAddRows="False"
AutoGenerateColumns="False"
IsReadOnly="False"
Visibility="{Binding IsLoading, Converter={StaticResource InvBooleanToVisibilityConverter}, Mode=OneWay}"
materialDesign:DataGridAssist.CellPadding="13 8 8 8"
materialDesign:DataGridAssist.ColumnHeaderPadding="8"
Grid.Row="1">
<DataGrid.Columns>
<DataGridTextColumn Header="Stock Code"
IsReadOnly="True"
Binding="{Binding StockCode}" />
<DataGridComboBoxColumn Header="Bin"
ItemsSource="{Binding Bins, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
SelectedItemBinding="{Binding SelectedBin, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Bin" />
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:0)
尝试将DisplayMemberPath
属性设置为Name
:
<DataGridComboBoxColumn Header="Bin"
ItemsSource="{Binding Bins}"
SelectedItemBinding="{Binding SelectedBin, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Name" />