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

BarButtonItemはFrameworkContentElementから継承するため、これはCMではサポートされていません(CMはFrameworkElementでのみメッセージをサポートします)。

CMフォーラムの投稿はここにあります

于 2012-09-24T03:43:57.813 に答える
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>
于 2014-05-01T14:44:17.967 に答える