我想知道。我如何使用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;
}
}
如果我使用标准按钮,一切正常。
答案 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>