无法解析Datagrid组合框列绑定

时间:2015-07-30 19:39:48

标签: c# wpf datagrid

我有一个绑定到TeamMembers的Datagrid。在构造函数后面的代码中:

 public SetupView(SetupViewModel model)
    {
        InitializeComponent();
        DataContext = model;
        this.model = model;
        ResourceGrid.ItemsSource = model.teamMembers;
        ResourceGrid.DataContext = model;
    }

我的ViewModel:

public class SetUpViewModel {
Tasks = new ObservableCollection<string>() { "A", "B", "C", "D" };

}

在我的XAML中,My ResourceGrid是一个包含一个ComboBoxColumn的数据网格:

      <DataGridComboBoxColumn Header="Task" Width="115"  ItemsSource="{Binding 
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支持comobocolumn时,我想在模板中添加组合框。请告知此事。

两者在性能上有什么不同,哪种解决方案最好。

1 个答案:

答案 0 :(得分:3)

ComboBox与您的其他视图有不同的DataContext。试试:

ItemsSource="{Binding RelativeSource={RelativeSource AncestorType = DataGrid}, Path=DataContext.Tasks}"

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

相关问题