DataTemplate和ObjectDataProvider刷新问题

时间:2009-11-24 09:33:36

标签: wpf datagrid combobox templates objectdataprovider

WPF数据网格(WPF Toolkit)中的单元格编辑模板有问题。该模板使用ComboBox和ItemsSource构建 ComboBox在运行时加载。

这是平均代码......

<ObjectDataProvider x:Key="dataValuesProvider" MethodName="GetValues" />

<toolkit:DataGrid
ItemsSource="{Binding Path=MyItems}">
<toolkit:DataGridTemplateColumn
  Header="Property1">
    <toolkit:DataGridTemplateColumn.CellTemplate>
         <DataTemplate>
        <TextBlock Text="{Binding Path=Property1, ValidatesOnDataErrors=true}"/>
         </DataTemplate>
    </toolkit:DataGridTemplateColumn.CellTemplate>
    <toolkit:DataGridTemplateColumn.CellEditingTemplate>
         <DataTemplate>
         <ComboBox
            SelectedValue="{Binding Path=Property1, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True}"
            IsEditable="True"
            IsSynchronizedWithCurrentItem="False"
            ItemsSource="{Binding Source={StaticResource dataValuesProvider}, Mode=OneWay}"
            />                                        
          </DataTemplate>
    </toolkit:DataGridTemplateColumn.CellEditingTemplate>
</toolkit:DataGridTemplateColumn></toolkit:DataGrid>

现在,我遇到了这个问题。

我必须在每行上使用不同的值更新dataValuesProvider。然后我在datagrid的selectionchanged事件上插入了dataValuesProvider(dataValuesProvider = null)的重置。

(dataValuesProvider将在所选行的特定单元格上输入后加载。)

这是问题所在:当我重置dataValuesProvider(在新行的selectionchanged上)时,它修改了ComboBox的SelectedValue并清除了前一行的Property1。

我认为存在这种行为,因为在编辑单元格之前,单元格的编辑模板不会更新绑定关联。这是对的吗?

如何避免此问题?

1 个答案:

答案 0 :(得分:0)

我还没有解决

但是我已经定义了一个显示问题的简单项目。

您可以从以下链接下载:http://pollosky.it/wp-content/uploads/2009/12/ObjectProviderTest.zip

尝试从第一行的第二个单元格中选择值,然后转到第二行。清除第一行属性的值!

我该怎么办?