0

WPF データグリッド (WPF ツールキット) のセルの編集テンプレートに問題があります。テンプレートは ComboBox で構築され、ComboBox の ItemsSource は実行時に読み込まれます。

これは平均的なコードです...

<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 がクリアされます。

セルの編集テンプレートは、セルを編集するまでバインディングの関連付けを更新しないため、この動作があると思います。それはそうです?

この問題を回避するにはどうすればよいですか?

4

1 に答える 1

0

まだ解決していません

ただし、問題を示す簡単なプロジェクトを定義しました。

次のリンクからダウンロードできます: http://pollosky.it/wp-content/uploads/2009/12/ObjectProviderTest.zip

最初の行の 2 番目のセルから値を選択してから、2 番目の行に移動してみてください。最初の行のプロパティの値がクリアされました!

どのようにできるのか?

于 2009-12-03T09:22:20.407 に答える