【发布时间】:2019-11-23 10:29:31
【问题描述】:
我目前正在尝试使用 Caliburn.Micro 创建一个 MediaPlayer。
在我的 ShellView 中,我有一个包含“文件”、“编辑”和“类别”的 MenuItems 的菜单。
Categories MenuItem 有List<CategoryModel> 作为ItemSource。
MenuItem 有一个设置为 Checkbox 的 ItemTemplate。
<Menu DockPanel.Dock="Top">
<MenuItem Header="_File">
<MenuItem Header="_Close" x:Name="Close"/>
</MenuItem>
<MenuItem Header="Edit">
<MenuItem Header="Settings"/>
<MenuItem Header="MediaData"/>
<Separator/>
<MenuItem Header="Reset"/>
</MenuItem>
<MenuItem Header="Categories" ItemsSource="{Binding AvailableCategories}">
<MenuItem.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding DisplayText}" cal:Message.Attach="[Event Checked] = [Action ChangeSelectedPlaylist($dataContext)]"/>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
</Menu>
现在我希望 Caliburn 在我的 ShellViewModel 中调用一个方法。但它总是说找不到方法 ChangeSelectedPlaylist 的目标。
现在我已经阅读了有关 Visual Trees 和 caliburns 'TargetWithoutContext' 的信息,但我无法让它运行指定的方法。
我发现的所有示例都使用 ContextMenus 和 ItemsControl。这似乎不适用于 MenuItems 中的复选框。
【问题讨论】:
-
ChangeSelectedPlaylist定义在哪里,它是ShellViewModel的一部分吗?可以分享一下方法吗?ShellView是一个窗口,它的数据上下文是ShellViewModel吗?
标签: c# wpf xaml data-binding caliburn.micro