Обработка данных в дочернем окне MVVM

274
26 июня 2017, 17:20

Нужно реализовать добавление продуктов в категории через диалоговое окно.

Я сделал такое окно:

XAML:

<Window.Resources>
    <HierarchicalDataTemplate x:Key="CategoryTemplate"
                              ItemsSource="{Binding Path=ChildCategories}">
        <CheckBox Content="{Binding Title}" 
                  Checked="CheckBox_Checked"
                  Unchecked="CheckBox_Unchecked" />
    </HierarchicalDataTemplate>
</Window.Resources>
<TreeView ItemsSource="{Binding Categories}"
          ItemTemplate="{StaticResource CategoryTemplate}" />

Code-behind:

public partial class AddToCategoryWindow : Window
{
    public List<CategoryVM> SelectedCategories { get; }
    public AddToCategoryWindow()
    {
        InitializeComponent();
        SelectedCategories = new List<CategoryVM>();
    }
    private void CheckBox_Checked(object sender, RoutedEventArgs e)
    {
        var categoryVm = (sender as CheckBox).DataContext as CategoryVM;
        SelectedCategories.Add(categoryVm);
    }
    private void CheckBox_Unchecked(object sender, RoutedEventArgs e)
    {
        var categoryVm = (sender as CheckBox).DataContext as CategoryVM;
        SelectedCategories.Remove(categoryVm);
    }
}

А дальше вызываю это окно из VM и забираю выбранные категории из свойства SelectedCategories:

private void AddToCategory()
{
    var addToCategoryDialog = new AddToCategoryWindow() {DataContext = this};
    if (addToCategoryDialog.ShowDialog() == true)
    {
        // Тут идет обработка продуктов
    }
}

Не уверен, что этот подход правильный.

Подскажите, как нужно делать такие вещи в MVVM?

READ ALSO
Как достать значение из async Task

Как достать значение из async Task

Есть вот такой кодВопрос: как в Main достать значение heart из ExampleTask()?

326
Как подключиться к MySQL БД на хостинге?

Как подключиться к MySQL БД на хостинге?

Доброго дня! Недавно начал изучать программированиеНачал с Unity3d использую C#

443
Настройка Chart в WPFToolkit

Настройка Chart в WPFToolkit

Доброго всем времени суток!

241
Кратчайший путь в графе, алгоритм Форда-Беллмана

Кратчайший путь в графе, алгоритм Форда-Беллмана

В чём может быть ошибка? Не считает кратчайший путь, как надо

372