无法解析数据网格组合框列绑定
本文关键字:组合 绑定 网格 数据网 数据 | 更新日期: 2023-09-27 18:05:42
我有一个绑定到TeamMembers的Datagrid。构造函数后面的代码中:
public SetupView(SetupViewModel model)
{
InitializeComponent();
DataContext = model;
this.model = model;
ResourceGrid.ItemsSource = model.teamMembers;
ResourceGrid.DataContext = model;
}
My ViewModel:
public class SetUpViewModel {
Tasks = new ObservableCollection<string>() { "A", "B", "C", "D" };
}
在我的XAML中,我的ResourceGrid是一个数据网格,有一个ComboBoxColumn:
<DataGridComboBoxColumn Header="Task" Width="115" ItemsSource="{Binding
Tasks}" ">
绑定中的Tasks引用我在视图模型中声明的Tasks Collection。但是,当我运行这个时,它不起作用。
但是如果我这样做,我添加组合到模板列,然后添加项目源的组合框的任务加载组合,它的工作:
<DataGridTemplateColumn Header="Task" Width="115">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Loaded="LoadATaskEventHandler"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
private void LoadATaskEventHandler(object sender, RoutedEventArgs e)
{
ComboBox comboBox = sender as ComboBox;
comboBox.ItemsSource=model.Tasks;
}
当datagrid支持combocolumn时,我不想在模板中添加combobox。请对此提出建议。性能有什么不同,两者之间的最佳解决方案是什么
ComboBox的DataContext
与视图的其他部分不同。试一试:
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType = DataGrid}, Path=DataContext.Tasks}"
我认为这两种方法之间的性能差异可能可以忽略不计,但是直接通过绑定来实现可以更好地避免紧耦合。