我试图让 WPF 数据网格(托管在从名为 ControlBase 的基类派生的用户控件中)中的下拉列正确绑定。它最初从对象中很好地填充,当我编辑单元格时会出现一个填充的下拉列表,但是当我离开焦点时,选定的值不会返回到单元格中。
这是我的模型和域对象:
public class ModelBase : INotifyPropertyChanged
{
public IList<Person> Persons { get; set; }
}
public class UserControlModel : ModelBase
{
public ObservableCollection<DatagridRecord> SourceData { get; set; }
}
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
public class DatagridRecord
{
public string Name { get; set; }
public Person ContactPerson { get; set; }
}
在我的 xaml.cs 中,我通过 Model 属性设置 DataContext:
public UserControlModel _model;
public UserControlModel Model
{
set
{
_model = value;
DataContext = null;
DataContext = _model;
}
}
这是我在 xaml 中的 DataGrid 列定义:
<DataGridTemplateColumn Header="Person" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=ContactPerson.Name}"/></DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=DataContext.Persons,
RelativeSource={RelativeSource AncestorType={x:Type uch:ControlBase}}}"
DisplayMemberPath="Name"
SelectedValuePath="Id" />
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
我认为将组合框选定值绑定到网格行有问题,但我绕着圈子试图将其连接起来。任何意见,将不胜感激。
科里。