【发布时间】:2015-03-07 21:06:20
【问题描述】:
我有一个要编辑的 DataGrid。一列是一个组合框
<DataGrid ItemsSource="{Binding Persons, Mode=TwoWay}"
SelectedItem="{Binding SelectedPerson, Mode=TwoWay}" >
<DataGrid.Columns>
<DataGridTemplateColumn Header="Company" >
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=DataContext.Companies}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Company.Name}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
问题是如果公司是null 那么我得到错误
双向绑定需要 Path 或 XPath
我怎样才能解决这个问题以允许将 Company 设置为 null?
【问题讨论】:
-
你刷新了itermsource吗?你能分享一下背后的代码吗
-
绑定最初是否成功(即只是更新不正确)?
-
"Path=DataContext.Companies" Companies 属性是否实现 INotifyPropertyChanged?
-
这可能有几个原因,如果你没有实现 INotifyPropertyChanged,如果你的 updatesourcetrigger 不正确等等。后面的代码会很有帮助。
-
我认为您只需要在模型视图构造函数中初始化“公司”(例如:Companies = new List
())。
标签: c# wpf mvvm data-binding datagrid