我对RibbonMenuButton有问题。目前我有:
<RibbonMenuButton Label="Meeting" Width="Auto" ToolTipDescription="Display requests on the agenda for the meeting selected" ToolTipTitle="Meeting"
LargeImageSource="pack://application:,,,/Resources/meeting.png"
ItemsSource="{Binding MeetingsAvailable}">
<RibbonMenuButton.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value}"/>
</DataTemplate>
</RibbonMenuButton.ItemTemplate>
</RibbonMenuButton>
我的 MeetingsAvailable 实际上是Dictionary<int, string>
。此代码正常运行,RibbonMenuButton
很好地显示了每个Value
字典。
现在我试图找回已被点击的Key
的{{1}}。我的想法是在我的ViewModel中使用MenuItem
并将事件绑定到此命令。但我真的不知道如何让事件对应于点击ICommand
有人已经这样做了吗?
提前谢谢。
答案 0 :(得分:3)
您可以使用ICommand
属性将RibbonMenuButton
数据绑定到ItemContainerStyle
,如下所示:
<RibbonMenuButton Label="Meeting" ItemsSource="{Binding MeetingsAvailable}" ... >
<RibbonMenuButton.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Value}"/>
</DataTemplate>
</RibbonMenuButton.ItemTemplate>
<RibbonMenuButton.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}">
<Setter Property="Command" Value="{Binding DataContext.NameOfCommand,
RelativeSource={RelativeSource AncestorType={x:Type Views:View}}}" />
<Setter Property="CommandParameter" Value="{Binding Key}" />
</Style>
</RibbonMenuButton.ItemContainerStyle>
</RibbonMenuButton>
答案 1 :(得分:0)
您必须在VM中创建一个可以绑定的命令。然后,您必须将字典的键绑定到命令参数,以便在命令函数中使用它。也许您必须在DataTemplate中创建一个额外的Button。