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)
理论上你必须绑定到这些名单ItemsSource
的DropDownButton
.
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)
创建attached property
ContextMenu/DropDownButton(无论您喜欢哪个)。如果您执行了下拉菜单,则获取它显示的上下文菜单,然后从中连接事件Click
并将值推回属性。
归档时间: |
|
查看次数: |
5080 次 |
最近记录: |