2012-01-17 8 views
0

XMLファイルにバインドされたListviewがあります。テキストファイルを使用して、XMLファイルの異なるノードの値を変更できます。リストビューの要素に直接バインドされている要素の値を変更すると、すべて正常に動作します。他の値に応じてXMLファイルの値を変更してから、XMLデータプロバイダをリフレッシュしてリストボックスの変更を確認する必要があります。私がそうした場合、私の以前のSelectedItemは失われます。私はまた、SelectedItemを保存して、リフレッシュ後にリロードしようとしましたが、うまくいきませんでした。XML DataProviderをリフレッシュするとListViewのSelectedItemが失われる

XMLデータプロバイダを更新する別の方法はありますか? ListViewをリフレクションするには、より良い方法がありますか? Window1.xamlで


...

 <Grid.DataContext> 
      <XmlDataProvider x:Name="VoltageData" Source="Voltages.xml" XPath="Voltages/Voltage" /> 
     </Grid.DataContext> 


...
Window1.xaml.cs中:
...

 xmlDoc.Save(VoltageData.Source.LocalPath); 
     VoltageData.Refresh(); 

...

+0

XMLプロバイダはINotifyPropertyChangedを実装していません。あなたが知っている構造を持っているなら、INotifyPropertyChangedを実装したSlassにXMLをロードし、そのクラスをObservableCollectionに入れ、それをListViewにバインドします。 Set of the classプロパティでは、XMLを更新します。 – Paparazzi

答えて

0
  1. リフレッシュする前に、リストビューの選択した項目を取得します(私はSelectedValueが好きです)。
  2. リフレッシュ後、同じの選択項目(またはSelectedValue)をListViewに設定します。

このようにして選択を維持します。選択したアイテム(または値)がWPFバインディングを使用してバインドされている場合、バインディングのソースパスを表すオブジェクト\プロパティを更新します。

関連する問題