Я написал шаблон для элемента меню, в котором у меня есть кнопка Toggle, которая, в свою очередь, имеет шаблон. В шаблоне кнопки я предоставляю различные визуальные эффекты для разных визуальных состояний кнопки, изменяя непрозрачность различных границ. Теперь скажите, когда нажата кнопка menuItem, отображается действие щелчка на кнопке действия. но когда я снова нахожусь над этим пунктом меню, я ожидаю, что будет иметь тот же выделенный эффект даже в проверенном состоянии кнопки переключения. Но выделенный эффект применяется ко всему меню, кроме этой кнопки переключения только потому, что событие наведения не распространяется на кнопку.Проблема шаблона элемента меню WPF
Хотел, чтобы добавить картинку, чтобы решить эту проблему, но поскольку я новичок в этом, мне не разрешено это делать.
Как установить непрозрачность границы, которая дает эффект нажатия на 0, когда элемент меню подсвечен ?!
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Icon"/>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" SharedSizeGroup="Shortcut"/>
</Grid.ColumnDefinitions>
<Grid x:Name="stackPanel" Background="{StaticResource DataLayerPanelBackGroundColorBrush}" >
<Grid.Resources>
<ResourceDictionary Source="../Themes/Framework.xaml"/>
</Grid.Resources>
<Border x:Name="backgroundMouseOverVisual2" BorderThickness="0,0,0,0" Margin="0,3,0,3"
Background="{StaticResource ActionButtonMouseOverBackgroundColorBrush}" Opacity="0"/>
<local:ActionButton DataContext="{TemplateBinding Tag}" x:Name="actionButton" Background="White"
MultiActionIdent="{Binding Converter={StaticResource ActionToIdentConverter}}"
SnapsToDevicePixels="True" Style="{StaticResource MultiActionMenuItemActionButtonStyle}" Margin="0"
/>
</Grid>
<StackPanel x:Name="contentStackPanel" Background="{StaticResource DataLayerPanelBackGroundColorBrush}" Grid.Column="1">
<ContentPresenter
TextElement.Foreground="{StaticResource MenuTextColorBrush}"
SnapsToDevicePixels="True"
Name="HeaderHost"
ContentSource="Header"
RecognizesAccessKey="True"
Width="Auto"
Margin="10,4,35,4" />
</StackPanel>
<TextBlock
x:Name="InputGestureText"
Grid.Column="2"
Text="{TemplateBinding InputGestureText}"
DockPanel.Dock="Right" />
</Grid>
<Border x:Name="Border" BorderThickness="0.5" Margin="1,1,1,1" Padding="2,2,2,2" BorderBrush="Black" Background="{x:Null}" Opacity="0"/>
</Grid>
И ниже шаблон ToggleButton, который назван actionButton в приведенном выше шаблоне:
Нечто подобное, когда свойство IsHighlighted из MENUITEM устанавливается в истинном значении непрозрачности границы внутри шаблона управления тумблера должен быть установлен в 0. Как я могу сделать Это?? – Anee
Можете ли вы разместить код? – RQDQ
Ummmm, чисто из памяти, не имеет ли WPF MenuItem встроенные возможности переключения? Что-то вроде IsChecked? В любом случае, MenuItem, который, как я думаю, уже содержит кнопку в своем шаблоне, и всевозможные обманщики необходимы для передачи событий между двумя наложенными кнопками. Готов поспорить, что содержимое MenuItem упростит что-то еще. –