В настоящее время я реализую проект WPF. У меня есть сетка данных. В одном из столбцов этой сетки данных пользователь должен иметь возможность открывать контекстное меню как для щелчка правой, так и для левой кнопки мыши. Я реализовал оба этих сценария ios, но когда пользователь щелкает левой кнопкой мыши и открывает контекстное меню, он не показывает, как он отображается при щелчке правой кнопкой мыши.
Когда пользователь щелкает правой кнопкой мыши для в первый раз контекстное меню отображается правильно
- Щелчок правой кнопкой мыши в первый раз - отображается правильно
При первом щелчке правой кнопкой мыши он отображается как
- , затем щелкните левой кнопкой мыши - граница отсутствует
При щелчке левой кнопкой мыши граница, показанная синим цветом, не отображается
Когда пользователь щелкает левой кнопкой мыши в первый раз, рамка и значок отсутствуют
- Щелчок левой кнопкой мыши в самый первый раз - рамка и значок отсутствуют
- затем щелкните правой кнопкой мыши - рамка и значок отсутствуют
Когда пользователь щелкает левой кнопкой мыши в первый раз, граница (выделена синим цветом) и значок (выделен красным цвет) отсутствует
Обратите внимание, что wh Под границей я имел в виду: в контекстном меню слева можно увидеть вертикальную линию серого цвета. Эту строку не видно, когда я щелкаю меню левой кнопкой мыши. Я пробовал несколько способов реализовать это, но ни один из них не увенчался успехом. У меня есть все стили, которые я пробовал
<!-- ContextMenu Styles -->
<Style x:Key="RowStyle" TargetType="{x:Type DataGridRow}">
<Setter Property="ContextMenu" Value="{DynamicResource SelcetedRowContextMenu}" />
</Style>
<Style x:Key="ContextStyle" TargetType="{x:Type ContextMenu}">
<Setter Property="OverridesDefaultStyle" Value="True" />
<Setter Property="SnapsToDevicePixels" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<Border BorderThickness="1" x:Name="Border" BorderBrush="{StaticResource StandardBorderColor}" >
<StackPanel ClipToBounds="True" Orientation="Vertical" IsItemsHost="True"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="Border" Property="Background" Value="{DynamicResource VsBrush.Window}" />
<Setter Property="Foreground" Value="{DynamicResource VsBrush.WindowText}"/>
<Setter Property="Background" Value="{DynamicResource VsBrush.Window}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--Style 1-->
<Style x:Key="VerticalSeparatorStyle"
TargetType="{x:Type Separator}"
BasedOn="{StaticResource {x:Type Separator}}">
<Setter Property="Margin" Value="20,2,1,20"/>
<Setter Property="BorderBrush" Value="GreenYellow"/>
<Setter Property="LayoutTransform">
<Setter.Value>
<TransformGroup>
<TransformGroup.Children>
<TransformCollection>
<RotateTransform Angle="90"/>
</TransformCollection>
</TransformGroup.Children>
</TransformGroup>
</Setter.Value>
</Setter>
</Style>
<!--Style 2-->
<Style x:Key="FocusVisualStyle" TargetType="{x:Type ContextMenu}">
<Setter Property="BorderBrush" Value="LightSeaGreen" />
--><!--<Setter Property="SnapsToDevicePixels" Value="True" />--><!--
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ContextMenu}">
<StackPanel Orientation="Horizontal" IsItemsHost="True" ClipToBounds="True">
<Line StrokeThickness="1" X1="100" Y1="0" X2="100" Y2="{Binding ElementName=ContextMenu, Path=ActualHeight}" />
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>-->
<!--Style 3-->
<Style TargetType="{x:Type ContextMenu}">
<Setter Property="FocusVisualStyle">
<Setter.Value>
<Style>
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate>
<Rectangle StrokeThickness="12" Stroke="red" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Setter.Value>
</Setter>
</Style>
<!--Style 4-->
<Style x:Key="{x:Static MenuItem.SeparatorStyleKey}"
TargetType="Separator">
<Setter Property="Width" Value="100"/>
<Setter Property="Margin" Value="20,2,1,20"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Separator">
<Border BorderBrush="{StaticResource StandardBorderColor}" Opacity="0.3"
BorderThickness="1" VerticalAlignment="Stretch" ClipToBounds="True"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!--End of Styles-->