比方说,我有一个绑定到AreaVM类型集合的DataGrid。 AreaVM具有名为Sub类型的InitialSub属性。组合框的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。请确保已正确设置绑定路径。”
答案 0 :(得分:0)
我终于做到了。我尝试将整个网格的ItemsSource绑定从“ x:Bind”更改为“ Binding”。这解决了问题,但是我不确定为什么。
我将以下内容用于组合框:
<wct:DataGridComboBoxColumn
Binding="{Binding InitialSub, Mode=TwoWay}"
Tag="InitialSub"
Header="Initial Sub"
Width="220"
IsReadOnly="False"
ItemsSource="{x:Bind ViewModel.SourceForSubsList}">