0

我在下面有一个 DataGridTemplateColumn 设置。我的问题是当我使用组合框更改行员工时,我看到其他一些行也更改了值。我认为它以某种方式与绑定有关,但这很奇怪,因为我在 celleditingtemplate 中似乎看不到我的 itemsource 数据上下文(任务),但我可以在 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 属性有关。也许所有的组合框都在尝试同步,因为当前选择的绑定集合正在改变。

4

1 回答 1

0

在遵循“IsSynchronizedWithCurrentItem”属性的引导之后,答案似乎在于 ComboBox。这里有一个更详细的解释:

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

于 2012-10-23T16:02:02.397 回答