2012-07-03 108 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>