DevExpress Barbuttonitem与caliburn micro一起使用

时间:2012-07-03 14:38:31

标签: wpf mvvm devexpress

我想知道。我如何使用dxb: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;
    }
}

如果我使用标准按钮,一切正常。

2 个答案:

答案 0 :(得分:0)

这不受CM支持,因为BarButtonItem继承自FrameworkContentElement(CM仅支持FrameworkElement上的消息)。

可以找到CM论坛帖子here

答案 1 :(得分: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>