【问题标题】:Using Caliburn Micro with Microsoft Ribbon Controls and RibbonApplicationMenu将 Caliburn Micro 与 Microsoft 功能区控件和 RibbonApplicationMenu 一起使用
【发布时间】:2014-09-02 21:58:38
【问题描述】:

我正在尝试使用 Caliburn Micro 和 MVVM 作为菜单。我目前正在使用位于 System.Windows.Controls.Ribbon 中的功能区控件。使用 x:Name 绑定单击事件对于选项卡中的常规按钮可以正常工作,但 RibbonApplicationMenu 中的菜单项不起作用。这是一个错误还是我必须在引导程序类中做一些额外的工作以确保 CM 找到 RibbonApplicationMenuItems?我在 CM v2.0.1 上。

这里有一些例子:

XAML:

<Ribbon x:Name="Ribbon" >
    <Ribbon.ApplicationMenu>
        <RibbonApplicationMenu KeyTip="F">
            <RibbonApplicationMenuItem Header="{Binding NewText}" x:Name="AppNew" />
        </RibbonApplicationMenu>
    </Ribbon.ApplicationMenu>
    <RibbonTab Header="{Binding OverviewTabText}" >
        <RibbonGroup x:Name="MainGroupOverview" Header="{Binding MainGroupText}">
            <RibbonButton Label="{Binding NewText}" x:Name="AppNewOverview"  />
        </RibbonGroup>
    </RibbonTab>
</Ribbon>

在 ViewModel 类中:

public void AppNew()
{
    //this will not be called
    New();
}

public void AppNewOverview()
{
    //this works just fine
    New();
}

【问题讨论】:

  • 因为这些项目不在可视树菜单项中,所以可能在寻找执行方法时遇到问题。我假设您单击并没有任何反应? Cal:Action.TargetWithoutContext = "{Binding path=DataContext, ElementName=Ribbon}" 将其放在应用程序菜单上。
  • 是的,我点击并没有任何反应。好像 CM 没有遍历树中的所有节点?或者在这种情况下,它是一个子树“ApplicationMenu”,它有自己的树,也许这就是问题所在?
  • CM 如何获取模板和/或上下文菜单(如您的情况)是一个问题,上述代码中的 Action 依赖对象应该可以工作。在可视化树上不会立即可见
  • 节点上尝试过,但没有成功。可能是什么问题?
  • 仍在研究此问题,但属性名称似乎对任何事情都不起作用,实际上是在我这边模拟了一个样本。 cm:Message.Attach="[Event Click]=[Action NewApp()]" 有效。真的很奇怪,如果这确实是一个问题,您可能想访问 GitHub 存储库并填写。

标签: c# wpf xaml caliburn.micro ribbon


【解决方案1】:

仍在研究此问题,但属性名称似乎对任何事情都不起作用,实际上是在我这边模拟了一个示例。 cm:Message.Attach="[Event Click]=[Action NewApp()]" 有效。实际上很奇怪,您可能想访问 GitHub 存储库并填写这是否真的是一个问题。 -

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2020-09-04
    • 1970-01-01
    • 1970-01-01
    • 2015-04-28
    • 1970-01-01
    • 2013-01-10
    相关资源
    最近更新 更多