WPFでMVVMパターンを学習しようとしていますが、バインディングとコレクションでいくつかの問題が発生しています。コレクションが変更されるため、コレクションのインデックスにバインドするのは好きではありません。
私は持っていますMyModelClass : ObservableCollection<MyData>
MyData
クラスには、カスタム情報を保持するために呼び出されるプロパティがありますDataValue
。MyModelClass
をオブジェクトで埋めMyData
ます。ビューモデルクラス( )には、タイプMyViewModel
のプロパティがあります。CurrentData
MyModelClass
この場合、私のバインディングはコンボボックスになります。バインディングは次のようになります。
<ComboBox Name="cmbxData"
ItemsSource="{Binding Path=CurrentData}"
DisplayMemberPath="DataValue"
SelectedValuePath="DataValue"
SelectedValue="{Binding Path=CurrentData[0].DataValue}"/>
これはすべて正常に機能し、MyViewModel
クラスにはPropertyChanged通知のインターフェイス設定があります。これが保持する情報を数秒ごとに更新する必要があります。
私は:の中でこのようなことをすることによってコレクションをリフレッシュしていますMyModelClass
:
public Class MyModelClass : ObservableCollection<MyData>
{
private static MyModelClass current = null;
public static MyModelClass Current
{
get
{
if(current == null)
current = new MyModelClass();
return current;
}
}
private void UpdateModel(MyData newData)
{
MyModelClass newModel = new MyModelClass();
newModel.Add(newData);
current = newModel;
}
}
中MyViewModel
にはこれがあります:
MyModelClass CurrentData = MyModelClass.Current;
できるだけ多くのコードを提供し、シンプルに保つように最善を尽くしました。明確にする必要がある場合はお知らせください。私の問題を解決する方法についての提案をありがとう。
見逃した場合:問題:上記のようにインデックスを使用せずに、コレクションまたはコレクションに表示したい値にバインドするにはどうすればよいSelectedValue="{Binding Path=CurrentData[0].DataValue}"
ですか()。これを修正したり、実装を正しく変更したりするにはどうすればよいですか?
ありがとう、