【问题标题】:WPF DataGridTemplateColumn Binding BehaviorWPF DataGridTemplateColumn 绑定行为
【发布时间】:2012-10-13 08:54:54
【问题描述】:

我在下面设置了一个 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; }

}

Tasks/Employee 模型都是具有一些字段的实体生成类。


更新:我开始认为这可能与 IsSynchronizedWithCurrentItem 属性有关。可能所有的组合框都在尝试同步,因为当前选择的绑定集合正在改变。

【问题讨论】:

  • 您可以给我们一个简化版的视图模型吗?此外,您的列上没有定义绑定,这可能是错误的来源。
  • 列的绑定驻留在模板中。文本框显示信息正常。

标签: .net wpf xaml binding datagrid


【解决方案1】:

在跟踪“IsSynchronizedWithCurrentItem”属性后,似乎答案在于 ComboBox。这里有更详细的解释:

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

【讨论】:

  • 我不认为是同样的情况。奇怪的是,你的代码似乎是正确的。
猜你喜欢
  • 2011-02-06
  • 2019-05-09
  • 1970-01-01
  • 2011-10-28
  • 2016-01-21
  • 2011-07-17
  • 2012-04-21
  • 1970-01-01
  • 2013-07-02
相关资源
最近更新 更多