需要通过对话框实现添加商品到分类。
我做了一个这样的窗口:
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}" />
代码隐藏:
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 中做这些事情?

这些答案有帮助:
1)如何显示模态窗口?
2)在 MVVM 模式的上下文中创建模态和非模态窗口的服务
3) OpenFileDialog 和 MVVM
4)等待用户操作的方法