FocusManager.FocusedElement не работает в меню - PullRequest
1 голос
/ 27 февраля 2020

Я использовал привязку для передачи FocusManager.FocusedElement в качестве параметра.

<Button Cursor="Hand" x:Name="NetworkModel" Width="Auto" Height="Auto" Background="Transparent" BorderBrush="Transparent" Foreground="#FF0398E2"
                        Command="{Binding Path=MenuSelectCommand}" CommandParameter="{Binding ElementName=root, Path=(FocusManager.FocusedElement)}">
                    <Grid Width="145">
                        <materialDesign:PackIcon Kind="GraphOutline" VerticalAlignment="Center"/>
                        <TextBlock HorizontalAlignment="Center" Text="Network Model" FontFamily="Champagne &amp; Limousines"/>
                    </Grid>
                </Button>

И работает как надо. Теперь я создал Меню, но Параметр Команды нулевой. Кто-нибудь знает, почему не работает для кнопки в меню, но работает только для кнопки за пределами меню.

<Menu FontSize="14" VerticalAlignment="Center" Background="#FF303030" FontFamily="Champagne &amp; Limousines" Foreground="#FF0398E2" HorizontalAlignment="Center" Height="28" FontWeight="Bold">
                    <MenuItem Background="#FF303030" Height="28" Width="Auto">
                    <MenuItem.Header>
                        <Grid Width="Auto">
                            <materialDesign:PackIcon Kind="ViewGrid" VerticalAlignment="Center"/>
                                <TextBlock Width="Auto" Text="Summaries" VerticalAlignment="Center" HorizontalAlignment="Center" Margin="20,0,0,0"/>
                        </Grid>
                    </MenuItem.Header>
                        <Button Cursor="Hand" x:Name="SignalsSummary" Width="Auto" Height="Auto" Background="#FF303030" BorderBrush="Transparent" Foreground="#FF0398E2"
                                Command="{Binding Path=MenuSelectCommand}" CommandParameter="{Binding ElementName=root, Path=(FocusManager.FocusedElement)}">
                            <Grid Width="145">
                                <TextBlock HorizontalAlignment="Center" Text="Signals Summary" FontFamily="Champagne &amp; Limousines"/>
                            </Grid>
                        </Button>
                        <Button Cursor="Hand" x:Name="EventSummary" Width="Auto" Height="Auto" Background="#FF303030" BorderBrush="Transparent" Foreground="#FF0398E2"
                                Command="{Binding Path=MenuSelectCommand}" CommandParameter="{Binding ElementName=root, Path=(FocusManager.FocusedElement)}">
                            <Grid Width="145">
                                <TextBlock HorizontalAlignment="Center" Text="Event Summary" FontFamily="Champagne &amp; Limousines"/>
                            </Grid>
                        </Button>
                        <Button Cursor="Hand" x:Name="LoggesSummary" Width="Auto" Height="Auto" Background="#FF303030" BorderBrush="Transparent" Foreground="#FF0398E2"
                                Command="{Binding Path=MenuSelectCommand}" CommandParameter="{Binding ElementName=root, Path=(FocusManager.FocusedElement)}">
                            <Grid Width="145">
                                <TextBlock HorizontalAlignment="Center" Text="Logges Summary" FontFamily="Champagne &amp; Limousines"/>
                            </Grid>
                        </Button>
                    </MenuItem>
                </Menu>

1 Ответ

1 голос
/ 27 февраля 2020

Я не решил, почему посылает ноль, но я меняю подход. Я добавил это в каждую кнопку

    <i:Interaction.Triggers>
            <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
               <i:CallMethodAction MethodName="OnMouseClick" TargetObject="{Binding}" />
            </i:EventTrigger>
    </i:Interaction.Triggers>

Так что теперь у меня есть это:

<Button Cursor="Hand" x:Name="LoggesSummary" Width="Auto" Height="Auto" Background="Transparent" BorderBrush="Transparent" Foreground="#FF0398E2">
                            <i:Interaction.Triggers>
                                <i:EventTrigger EventName="PreviewMouseLeftButtonDown">
                                    <i:CallMethodAction MethodName="OnMouseClick" TargetObject="{Binding}" />
                                </i:EventTrigger>
                            </i:Interaction.Triggers>
                            <Grid Width="145">
                                <TextBlock HorizontalAlignment="Center" Text="Logges Summary" FontFamily="Champagne &amp; Limousines"/>
                            </Grid>
                        </Button>
...