如何知道在DropDownButton中点击了什么

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; }
}
Run Code Online (Sandbox Code Playgroud)

理论上你必须绑定到这些名单ItemsSourceDropDownButton.

public List<TitledCommand> TitledCommmands { get; private set; }
Run Code Online (Sandbox Code Playgroud)

现在我们只为样式容器设置样式,DropDownButton以便从中获取标题和命令ItemsSource.

包括MahApps:

xmlns:metroControls="http://metro.mahapps.com/winfx/xaml/controls"
Run Code Online (Sandbox Code Playgroud)

这是风格......

<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>
Run Code Online (Sandbox Code Playgroud)


123*_*9 0 0

创建attached propertyContextMenu/DropDownButton(无论您喜欢哪个)。如果您执行了下拉菜单,则获取它显示的上下文菜单,然后从中连接事件Click并将值推回属性。