下面有一个DataGridTemplateColumn设置。我的问题是,当我使用combobox更改一行员工时,还会看到其他一些行也会更改值。我认为它与绑定有某种联系,但这是很奇怪的,因为我似乎看不到我的项目源数据文本(任务),而我在芹菜模板中,但我可以在单元模板内。
<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属性有关。可能所有的组合框都在尝试同步,因为所选的绑定集合当前正在传输。
发布于 2012-10-23 16:02:02
在跟踪“IsSynchronizedWithCurrentItem”属性的线索之后,答案似乎在于ComboBox。下面是一个更详细的解释:
https://stackoverflow.com/questions/2458420/wpf-combobox-binding
https://stackoverflow.com/questions/13030213
复制相似问题