gpt4 book ai didi

menuitem - Caliburn.Micro 子菜单项如何单击在包含 View 的 View 模型上调用操作?

转载 作者:行者123 更新时间:2023-12-01 23:04:25 25 4
gpt4 key购买 nike

我在shellView中有一个顶级菜单,选择子菜单时,我想在shellViewModel上调用以下方法(condertor.collection.collection.allactive)。

    public void SelectServer(string pServerName)
{
mDefaultClaimServer = pServerName;
}

以下不起作用,因为没有调用任何方法(我尝试了各种签名和 Action 参数)-

    <Menu Name="menu1" DockPanel.Dock="Top">
<MenuItem Header="Select Server" Name="ClaimServers">
<MenuItem.ItemTemplate>
<DataTemplate>
<!-- we need this else we show the class name -->
<TextBlock Text="{Binding DisplayName}">
<ContentControl cal:Message.Attach="[Event Click] = [Action TxTester.ShellViewModel.SelectServer($Text)]"/>
</TextBlock>
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
</Menu>

以下确实调用了 ShellViewModel SelectServer 方法,但是对于单击的子 MenuItem 的文本,我得到了 null(我还尝试了许多其他签名和操作参数)-

    <Menu Name="menu1" DockPanel.Dock="Top">
<MenuItem Header="Select Server" Name="ClaimServers" cal:Message.Attach="SelectServer($this.Text)">
<MenuItem.ItemTemplate>
<DataTemplate>
<!-- we need this else we show the class name -->
<TextBlock Text="{Binding DisplayName}" />
</DataTemplate>
</MenuItem.ItemTemplate>
</MenuItem>
</Menu>

我已经为此苦苦挣扎了很长时间,但无法弄清楚。有人可以建议我可以将子 MenuItem 的标题文本传递给 ShellViewModel SelectServer 方法的正确组合吗?

最佳答案

根据 Rob Eisenberg 的一篇文章,我得到了我想要做的工作,这里描述了“从绑定(bind)子菜单中获取文本的特殊技巧” - http://caliburnmicro.codeplex.com/discussions/287228

如果有人有建议,我仍然很想知道如何使用标准 OOTB 逻辑来做我想做的事情,以便我能够更好地理解 CM。

基本上我将它添加到 Bootstrap Configure() overide -

        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 -

        <MenuItem Header="_Select Server" Name="ClaimServers" cal:Message.Attach="SelectServer($originalsourcecontext)" />

然后我收到了我想要的子菜单项的标题文本。

关于menuitem - Caliburn.Micro 子菜单项如何单击在包含 View 的 View 模型上调用操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11279443/

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