メインウィンドウとダイアログボックスの間でいくつかのデータを渡すか、共有する簡単な方法を見つけようとしています。ダイアログボックスからデータを取り出す方法は?
メインウィンドウには、ダイアログボックスに渡して編集可能な変数のコレクションがあります。
私は今それをやった方法、私は、ダイアログボックスのコンストラクタにリストを渡しです:
private void Button_Click(object sender, RoutedEventArgs e)
{
var window = new VariablesWindow(_templateVariables);
window.Owner = this;
window.ShowDialog();
if(window.DialogResult == true)
_templateVariables = new List<Variable>(window.Variables);
}
そしてそこに、私は深いコピーにリストが必要と思い、
public partial class VariablesWindow : Window
{
public ObservableCollection<Variable> Variables { get; set; }
public VariablesWindow(IEnumerable<Variable> vars)
{
Variables = new ObservableCollection<Variable>(vars);
// ...
編集時に、ユーザーが実際に「保存」を押すまでメインウィンドウに反映されません。
これは正しいアプローチですか?もしそうなら、ObservableCollectionを簡単にコピーする簡単な方法はありますか?今のところ、変数は浅いコピーしかないので変更されていると思います。
+1あなたの答えは私の上になります。私は明らかに混乱していた:) –
ああ! 'ICloneable'!私は「クラスがコピーコンストラクタを実装しているので、拡張子を書くことができるかどうかをチェックするにはどうすればよいか」と考えようとしていました...これはうまくいくでしょう。 – mpen