2014-09-02 18 views
0

我正在嘗試使用Caliburn Micro和MVVM作爲菜單。我目前使用位於System.Windows.Controls.Ribbon的Ribbon控件。使用x:Name綁定單擊事件對於標籤中的常規按鈕可以正常工作,但RibbonApplicationMenu中的菜單項不起作用。這是一個錯誤,還是我必須在bootstrapper類中做一些額外的工作,以確保CM找到RibbonApplicationMenuItems?我在CM v2.0.1上。使用Caliburn Micro和Microsoft Ribbon控件和RibbonApplicationMenu

一些例子在這裏:

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(); 
} 
+0

因爲項目不在可視化樹menuitem相關,它可能有問題找到一個方法來執行。我假設你點擊並沒有任何反應? Cal:Action.TargetWithoutContext =「{Binding path = DataContext,ElementName = Ribbon}」放置在應用程序菜單上。 – mvermef 2014-09-03 15:43:26

+0

是的,我點擊,沒有任何反應。看起來像CM不遍歷樹中的所有節點?或者在這種情況下,它是一個具有自己的樹的子樹「ApplicationMenu」,也許這就是問題所在? – tobjak75 2014-09-04 07:01:39

+0

它是CM如何獲取模板和/或上下文菜單的問題(如您的情況),上述代碼中的Action依賴項對象應該可以工作。在Visual Tree上不會立即顯示 – mvermef 2014-09-04 23:07:35

回答

0

還是挖這一點,但歸因名稱似乎不爲任何工作,實際上嘲笑了我的一個樣本。 cm:Message.Attach =「[Event Click] = [Action NewApp()]」起作用。其實很奇怪,你可能想要通過GitHub回購下降,並填寫,如果這可能實際上是一個問題。 -