【发布时间】:2018-07-13 19:43:20
【问题描述】:
我有一个 WPF 系统托盘栏应用程序。当右键单击托盘栏图标时,有一个 ContextMenu 使用 HierarchicalDataTemplate 来获得 2 级动态填充菜单。它可以工作,但第二级项目的“可点击”部分没有正确拉伸到父控件的可用宽度。而是看图片:
现在用户必须单击MenuItem 的较暗部分(文本所在的位置)才能执行此项目的Command。我希望整个菜单行都能够触发Command。
这是我的 XAML:
<CollectionViewSource x:Key="Items" Source="{Binding Path=Items}" />
<ContextMenu x:Shared="false" x:Key="Menu" HorizontalContentAlignment="Stretch">
<ContextMenu.ItemTemplate>
<HierarchicalDataTemplate DataType="SystemTrayItemsViewModel" ItemsSource="{Binding Items}">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding Converter={StaticResource TabIconConverter}}" />
<TextBlock Text="{Binding Name}" />
</StackPanel>
<HierarchicalDataTemplate.ItemTemplate>
<DataTemplate>
<MenuItem Header="{Binding Text}" ToolTip="{Binding ToolTip}" Command="{Binding ToClipBoardCommand}" HorizontalContentAlignment="Stretch" />
</DataTemplate>
</HierarchicalDataTemplate.ItemTemplate>
</HierarchicalDataTemplate>
</ContextMenu.ItemTemplate>
<ContextMenu.ItemsSource>
<CompositeCollection>
<CollectionContainer Collection="{Binding Source={StaticResource Items}}">
</CollectionContainer>
<Separator />
<MenuItem Header="Exit" cal:Message.Attach="ExitApplication" />
</CompositeCollection>
</ContextMenu.ItemsSource>
</ContextMenu>
【问题讨论】:
-
您找到解决此问题的方法了吗?我也遇到了这个问题,但 HierarchicalDataTemplate 没有。该问题与使用 CompositeCollection 绑定 VM 的集合以及 xaml 定义的 MenuItems 有关。
标签: wpf xaml mvvm contextmenu