Joe*_*csy 11 c# wpf mahapps.metro
根据此页面,DropDownButton使用ContextMenu来显示ItemsSource.我们如何知道用户点击的内容?按钮上的Click事件不是菜单,而是按钮本身.我看不到其他事件.
aka*_*xer 14
我遇到了这个问题寻找相同的答案.我从来没有在网上找到任何东西,但我自己发现了这个解决方案 也许这将有助于未来的某些人.
如前所述,DropDownButton使用a ContextMenu来显示它ItemsSource.基本上我正在寻找的是一个来自按钮的"菜单式"下拉菜单.例如,假设您有一个DropDownButton"添加".也许你想要2个选项,如"添加新"和"添加现有".所以这就是我做的......
首先,我做了一些对象来保存标题/内容和命令.
public class TitledCommand
{
    public String Title { get; set; }
    public ICommand Command { get; set; }
}
理论上你必须绑定到这些名单ItemsSource的DropDownButton.
public List<TitledCommand> TitledCommmands { get; private set; }
现在我们只为样式容器设置样式,DropDownButton以便从中获取标题和命令ItemsSource.
包括MahApps:
xmlns:metroControls="http://metro.mahapps.com/winfx/xaml/controls"
这是风格......
<metroControls:DropDownButton Content="Add" ItemsSource="{Binding Path=TitledCommmands}">
    <metroControls:DropDownButton.ItemContainerStyle>        
        <Style TargetType="MenuItem">
            <Setter Property="Header" Value="{Binding Path=Title}"/>
            <Setter Property="Command" Value="{Binding Path=Command}"/>
        </Style>          
    </metroControls:DropDownButton.ItemContainerStyle>
</metroControls:DropDownButton>
创建attached propertyContextMenu/DropDownButton(无论您喜欢哪个)。如果您执行了下拉菜单,则获取它显示的上下文菜单,然后从中连接事件Click并将值推回属性。