对于this page,DropDownButton使用ContextMenu显示ItemsSource。我们如何知道用户点击了什么?按钮上的Click事件不属于菜单,而是按钮本身。我没有看到其他事件。

最佳答案

我遇到了这个问题,希望找到相同的答案。我从来没有真正在网上找到任何东西,而是自己发现了这个解决方案。也许它将对将来的某个人有所帮助。

如前所述,DropDownButton使用ContextMenu显示其ItemsSource。基本上我在寻找的是一个来自按钮的“菜单式”下拉菜单。例如,假设您有一个表示“添加”的DropDownButton。也许您想要2个选项,例如“添加新”和“添加现有”。这就是我所做的...

首先,我做了一些对象来保存标题/内容和命令。

public class TitledCommand
{
    public String Title { get; set; }
    public ICommand Command { get; set; }
}

从理论上讲,您将拥有这些列表以绑定(bind)到ItemsSourceDropDownButton
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>

关于c# - 如何知道在DropDownButton中单击了什么,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23019282/

10-12 15:06