【发布时间】:2019-08-02 00:12:27
【问题描述】:
假设我有一个绑定到 AreaVM 类型集合的 DataGrid。 AreaVM 有一个名为 InitialSub 的属性,类型为 Sub。组合框的 ItemsSource 是另一个 Sub 类型的集合。
<wct:DataGrid x:Name="grid"
ItemsSource="{x:Bind ViewModel.Source, Mode=TwoWay}"
Margin="12"
FontSize="4"
AutoGenerateColumns="False"
GridLinesVisibility="None"
CanUserResizeColumns="True"
CanUserSortColumns="True"
SelectionMode="Extended"
IsReadOnly="False"
VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto">
<wct:DagaGridColumns>
<wct:DataGridComboBoxColumn Binding="{Binding InitialSub, Mode=TwoWay}" Tag="InitialSub"
Header="Initial Sub"
Width="220"
ItemsSource="{x:Bind ViewModel.SourceForSubsList}"
DisplayMemberPath="SubName"
</wct:DataGridComboBoxColumn>
</wct:DataGridColumns>
</wct:DataGrid>
为什么我会收到此错误:“ItemsSource 元素不包含属性 InitialSub。请确保已正确设置绑定路径。”有人可以帮忙吗?
页面视图模型的相关部分如下:
public ObservableCollection<Sub> SourceForSubsList { get; set; }
public ObservableCollection<AreaVM> Source
{
get => _source;
set
{
_source = value;
}
}
AreaVM 包含数据网格每一行的所有属性。这些属性之一是 InitialSub:
public Subfactor InitialSub
{
get => Model.InitialSub;
set
{
if (value != Model.InitialSub && value != null)
{
Model.InitialSub = value;
RaisePropertyChanged(nameof(InitialSub));
}
}
}
如果我不包含 ComboBox 列,DataGrid 会正确加载。
我将 ComboBox XAML 更改为此,但仍然收到相同的错误:
<wct:DataGridComboBoxColumn Binding="{Binding InitialSub, Mode=TwoWay}"
Header="Initial Sub"
Width="220"
DisplayMemberPath="SubName"
ItemsSource="{x:Bind ViewModel.SourceForSubsList}"
Visibility="{x:Bind ViewModel.ShowInitialCoreColumns, Mode=OneWay, Converter={StaticResource boolToVisConverter}}">
</wct:DataGridComboBoxColumn>
SubName 属性是一个字符串。就像 DisplayMemberPath 被忽略一样。我仍然得到这个:“ItemsSource 元素不包含属性 InitialSub。确保已正确设置绑定路径。”
【问题讨论】:
-
嗨,马特,我没有看到你将
InitialCoreFindingSubfactor绑定到ItemsSource,我无法重现你的问题,你能介意分享 minimal reproducible example 吗? -
谢谢,尼科。抱歉,错误消息应该是““ItemsSource 元素不包含属性 InitialSub。”我还添加了显示 DataGrid 设置的 XAML。
-
ViewModel是否包含 SourceForSubsList 字段?你能展示你的视图模型吗? -
确实如此。我已经添加了上面的视图模型。谢谢。
-
我发现了你的问题,你需要将 SourceForSubsList 转换为 string List 或将
DisplayMemberPath直接转换为 Sub 类的字符串属性。
标签: xaml uwp datagrid windows-community-toolkit