Как применить вертикальную границу при щелчке левой кнопкой мыши по контекстному меню? - PullRequest
0 голосов
/ 04 августа 2020

В настоящее время я реализую проект 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-->
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...