WPF DataGridTemplateColumn绑定行为

时间:2012-10-23 12:15:32

标签: .net wpf xaml binding datagrid

我在下面有一个DataGridTemplateColumn设置。我的问题是当我使用组合框更改行员工时,我看到其他一些行也会更改值。我认为它与某种程度上的绑定有关,但它很奇怪,因为我似乎无法在celleditingtemplate内部看到我的itemsource datacontext(Tasks),但我可以在celltemplate中。

<UserControl.Resources>
    <CollectionViewSource x:Key="EmployeeViewSource" Source="{Binding Path=Employees}" />
</UserControl.Resources>
     <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=Tasks}">
     <DataGrid.Columns>
        <DataGridTemplateColumn Header="Employee Name">
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <ComboBox DisplayMemberPath="Name" ItemsSource="{Binding Source={StaticResource EmployeeViewSource}}" SelectedValue="{Binding Path=EmployeeID}" SelectedValuePath="EmployeeID" />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=Employee.Name, Mode=OneWay}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

相关的ViewModel类似于下面的内容:

Class TaskViewModel : ViewModelBase
{
    public ObservableCollection<Task> Tasks { get; private set; }
    Public ObservableCollection<Employee> Employees { get; private set; }

}

任务/员工模型都是实体生成的类,包含一些字段。


更新:我开始认为这可能与IsSynchronizedWithCurrentItem属性有关。也许所有组合框都试图同步,因为选择的绑定收集电流正在变换。

1 个答案:

答案 0 :(得分:0)

在'IsSynchronizedWithCurrentItem'属性上跟随前导后,似乎答案在于ComboBox。这是一个更详细的解释:

https://stackoverflow.com/questions/2458420/wpf-combobox-binding