无法解析数据网格组合框列绑定

本文关键字:组合 绑定 网格 数据网 数据 | 更新日期: 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}"

我认为这两种方法之间的性能差异可能可以忽略不计,但是直接通过绑定来实现可以更好地避免紧耦合。