アプリケーションのメイン ウィンドウ コントロールにバインドされた多数のコレクションがあり、以下に簡略化された形式で示されています。ビュー モデルには他にも多くの要素があり (わかりやすくするために省略しています)、これらはすべて更新され、期待どおりに機能します。
コレクションの要素を別のウィンドウで編集し、編集したデータを元のコレクションに戻す必要があります。
/// Example of the Collection and Properties
ObservableCollection<MyData> _MyCollection = new ObservableCollection<MyData>();
public ObservableCollection<MyData> MyCollection { get { return _MyCollection; } }
public class MyData : INotifyPropertyChanged
{
private bool cb_checked;
public string Param1 { get; set; }
public string Param2 { get; set; }
public bool myCheck
{
get { return cb_checked; }
set
{
if (cb_checked == value) return;
cb_checked = value;
RaisePropertyChanged("Checked");
}
}
}
私の問題は、コレクションのアイテムを新しいウィンドウに渡して編集する方法です。
私の考えは、ウィンドウのコンストラクターでアイテムを渡すことでした
Dialog.Edit window = new Dialog.Edit(_MyCollection[2] );
window.Owner = this;
window.Show();
インデックス付き参照を使用できないことを読んだので、これも試しました
var tmp = _MyCollection[2];
Dialog.Edit window = new Dialog.Edit( tmp);
window.Owner = this;
window.Show();
しかし、これは機能せず、要素にアクセスしようとすると null 例外が発生します。
完全なコレクションを渡す必要がある場合、これらはすべて非常に小さいため、つまり 50 アイテム未満であるため、これも問題ありません。
私はこれを間違った方法で行っているに違いありません。誰かがこれを正しく行う方法を説明してください。
どうもありがとうサラ