gpt4 book ai didi

wpf - 使用 Caliburn micro 的动态菜单

转载 作者:行者123 更新时间:2023-12-01 22:56:00 26 4
gpt4 key购买 nike

我在我的 WPF 项目中使用 Caliburn micro。静态菜单很容易与Caliburn绑定(bind)

<Menu Grid.Row="0" IsMainMenu="True">
<MenuItem Header="_File">
<MenuItem x:Name="OpenScript" Header="_Open script"/>
</MenuItem>
<MenuItem Header="_Script">
<MenuItem x:Name="RunScript" Header="_Run script" />
<MenuItem x:Name="StopScript" Header="_Stop script" />
</MenuItem>
<MenuItem Header="S_ettings">
<MenuItem x:Name="Plugins" Header="_Plugins">...Clickable children here</MenuItem>
</MenuItem>
</Menu>

名称绑定(bind)到模型上的方法,但对于您在上面看到的插件菜单,我们需要绑定(bind) PluginViewModel 的集合。然后,当您单击插件时,我希望在菜单上触发 Caliburn 操作方法 View 模型(您现在可以从中产生返回 IResults 的类型)..这可能吗?

这个问题是针对这个开源项目的 https://github.com/AndersMalmgren/FreePIE

编辑:忘了提到我已经解决了绑定(bind)部分,

public BindableCollection<PluginMenuViewModel> Plugins { get; set; }

但我不知道如何听模型的点击

最佳答案

最好的方法是添加您自己的消息绑定(bind)器

MessageBinder.SpecialValues.Add("$originalsourcecontext", context => {
var args = context.EventArgs as RoutedEventArgs;
if(args == null) {
return null;
}

var fe = args.OriginalSource as FrameworkElement;
if(fe == null) {
return null;
}

return fe.DataContext;
});

然后您可以像这样从 xaml 中使用它

cal:Message.Attach="ShowSettings($originalsourcecontext)"

关于wpf - 使用 Caliburn micro 的动态菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988705/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com