Просто пытаюсь найти простой способ передать или поделиться некоторыми данными между главным окном и диалоговым окном.
У меня в главном окне есть набор переменных, которые я хочу передать в диалоговое окно, чтобы их можно было редактировать.
То, как я это сделал сейчас, я передаю в списке конструктору диалогового окна:
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? Потому что в нынешнем виде я думаю, что мои переменные изменяются, потому что он делает только мелкую копию.