1

我想知道。如何将 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;
    }
}

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

4

2 回答 2

0

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

CM论坛帖子可以在这里找到

于 2012-09-24T03:43:57.813 回答
0

这个问题有一个解决方法,可以让您从 DX 的 Bar 项目中触发操作。您可以使用静态栏项目并将任何标准控件(或按钮)放入其中,然后从这些元素触发操作。例子:

  <dxb:BarStaticItem x:Name="LoadAllBarItem">
    <dxb:BarStaticItem.ContentTemplate>
      <DataTemplate>
        <Button Content="Load all"
                cal:Message.Attach="LoadAction"/>
      </DataTemplate>
    </dxb:BarStaticItem.ContentTemplate>
  </dxb:BarStaticItem>
于 2014-05-01T14:44:17.967 回答