WPF FocusManager.FocusedElement在窗口加载时不显示装饰

时间:2019-01-18 15:49:44

标签: wpf

我很难让按钮的焦点装饰器显示何时最初将焦点放在负载上。该按钮具有焦点,但装饰物未显示。如果我使用TAB循环浏览并返回控件,那么装饰器将显示。我以为这可能是我的自定义样式的问题,但是作为一个健全性检查,我创建了一个非常简单的窗口,它表现出相同的行为:

<Window x:Class="WpfApp1.Window2"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp1"
    mc:Ignorable="d"
      FocusManager.FocusedElement="{Binding ElementName=txtYes}"
    Title="My Window" Width="300" SizeToContent="Height">
<Grid Margin="20">
    <StackPanel>
        <Button Content="Yes" x:Name="txtYes">
            <Button.Style>
                <Style TargetType="Button">
                    <Style.Triggers>
                        <Trigger Property="IsFocused" Value="True">
                            <Setter Property="Background" Value="Wheat" />
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
        <Button Content="No" x:Name="txtNo"/>
        <Button Content="Cancel" x:Name="txtCancel"/>
    </StackPanel>
</Grid>

Initial Load

如果运行此命令,您会注意到“确定”按钮是最确定的焦点,但是装饰器未显示。按下选项卡将焦点移至“否”按钮并显示其装饰物。按住Shift键并在YES按钮上正确显示装饰。有趣的是,如果我按Alt键,装饰器会显示(我发现这样做是通过Alt + Print Screen进行屏幕截图)。

关于这是为什么的任何想法,以及我需要向装饰者展示什么?

0 个答案:

没有答案