如何解决WPF MenuItem 内的对齐
在我的应用程序中,我有一个 Menu
对象,其中每个 MenuItem
都有另一个 MenuItem
,它们都从 VM 中定义的属性中获取数据。然后我设置了一个带有 Command
的 MultiValueConverter
,一切都按预期工作。
我的问题在于 Menu
渲染:正如您从附加的屏幕截图中看到的那样,包含数字数据的 TextBlocks
没有拉伸 Menu
本身的整个宽度,很难触发 LeftClick
交互。我想让每个 TextBlock
(如果可能的话每个 Header
)填满整个菜单,但即使我把 HorizontalAlignment
和 HorizontalContentAlignment
设为 {{1} } 外观不变。
除此之外,我想知道如何消除每个 Stretched
左侧的空列,但我不明白它们的定义位置。
这是相关的 XAML:
MenuItem
所以,我的问题是:
- 如何让
<DataTemplate x:Key="SynergyTemplate"> <Menu HorizontalAlignment="Stretch" HorizontalContentAlignment="Stretch" Visibility="{Binding Path=SynergySelectionActive,Source={StaticResource ResourceKey=VM},Converter={StaticResource ResourceKey=BoolToVisConverter}}"> <MenuItem Header="{Binding Path=RenderValue.CurrentItem}" ItemsSource="{Binding Path=TabledValues}"> <MenuItem.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Vertical" /> </ItemsPanelTemplate> </MenuItem.ItemsPanel> <MenuItem.ItemTemplate> <DataTemplate> <Menu> <MenuItem x:Name="SynergyMenuItem" Background="Red" Header="{Binding Path=Render}" ItemsSource="{Binding Path=SynergyPanelParameters,Converter={StaticResource ResourceKey=MachineToDiametersConverter}}"> <MenuItem.ItemTemplate> <DataTemplate> <TextBlock x:Name="SynergyDiameterText" HorizontalAlignment="Stretch" Background="Yellow" Text="{Binding .}"> <TextBlock.InputBindings> <MouseBinding Command="{Binding Path=UpdateSynergyCommand,Source={StaticResource ResourceKey=VM}}" Gesture="LeftClick"> <MouseBinding.CommandParameter> <MultiBinding Converter="{StaticResource ResourceKey=StdMultiConverter}"> <Binding ElementName="SynergyMenuItem" Path="DataContext" /> <!-- Datacontext here is the source list item,exactly what I need to process the command --> <Binding ElementName="SynergyDiameterText" Path="Text" /> </MultiBinding> </MouseBinding.CommandParameter> </MouseBinding> </TextBlock.InputBindings> </TextBlock> </DataTemplate> </MenuItem.ItemTemplate> </MenuItem> </Menu> </DataTemplate> </MenuItem.ItemTemplate> </MenuItem> </Menu> </DataTemplate>
和TextBlock
“填满”整个Header
? - 如何隐藏/删除每个菜单左侧的空列?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。