2012-07-03 51 views
1

我想知道。如何使用dxb:Barbuttonitem與caliburn micro一起使用。 我試圖寫這個代碼。但不幸的是它沒有奏效。DevExpress Barbuttonitem與caliburn micro

<Window x:Class="WpfApplication1.ShellView" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:cal="http://www.caliburnproject.org" 
    xmlns:dxb="http://schemas.devexpress.com/winfx/2008/xaml/bars" 
    xmlns:dxr="http://schemas.devexpress.com/winfx/2008/xaml/ribbon" 
    Title="ShellView" 
    Width="300" 
    Height="300"> 
<Grid> 
    <dxb:BarManager Name="barManager1"> 
     <dxb:BarManager.Items> 
      <dxb:BarButtonItem Name="Connect" Content="barButtonItem1" /> 
     </dxb:BarManager.Items> 
     <DockPanel > 
      <dxr:RibbonControl DockPanel.Dock="Top"> 
       <dxr:RibbonDefaultPageCategory Name="ribbonDefaultPageCategory1" Caption="defaultCategory"> 
        <dxr:RibbonPage Caption="Home"> 
         <dxr:RibbonPageGroup Name="ribbonPageGroup1" Caption="Tools"> 
          <dxb:BarButtonItemLink BarItemName="Connect" /> 
         </dxr:RibbonPageGroup> 
        </dxr:RibbonPage> 
       </dxr:RibbonDefaultPageCategory> 
      </dxr:RibbonControl> 
      <dxr:RibbonStatusBarControl DockPanel.Dock="Bottom" /> 
     </DockPanel> 
    </dxb:BarManager> 
</Grid> 

[Export(typeof(IShell))] 
public class ShellViewModel : PropertyChangedBase, IShell 
{ 
    public void Connect() 
    { 
     MessageBox.Show(string.Format("Hello {0}!", "aaa")); 
    } 

    public bool CanConnect() 
    { 
     return false; 
    } 
} 

如果我使用一個標準的按鈕,一切工作正常。

回答

0

由於BarButtonItem繼承自FrameworkContentElement(CM僅支持FrameworkElement上的消息),所以CM不支持此功能。

的CM論壇後可以發現here

0

有這個問題,它可以讓你觸發來自DX的酒吧項目操作的解決方法。您可以使用靜態欄項目,並將任何標準控件(或按鈕)放在裏面,然後從這些元素觸發操作。示例:

<dxb:BarStaticItem x:Name="LoadAllBarItem"> 
    <dxb:BarStaticItem.ContentTemplate> 
     <DataTemplate> 
     <Button Content="Load all" 
       cal:Message.Attach="LoadAction"/> 
     </DataTemplate> 
    </dxb:BarStaticItem.ContentTemplate> 
    </dxb:BarStaticItem>