【问题标题】:WPF: Button glows when app is startedWPF:启动应用程序时按钮会发光
【发布时间】:2017-06-12 01:43:29
【问题描述】:

我有一个看起来很简单的小问题,但我不知道如何解决它。在 Visual Studio 中,我使用 WPF 制作了这个应用程序,并在带有行和列的网格中放置了一些按钮。现在,每次我启动我的应用程序时,第一行中的第一个按钮都会像被点击一样发光。我认为这看起来很奇怪,我希望我的按钮看起来像其他按钮。有没有可能阻止它? 提前致谢,感谢您的帮助!

【问题讨论】:

  • 会不会是第一个按钮被聚焦了?当你按 Tab 时,发光效果会移动到不同的按钮吗?
  • 是的,我想就是这样。应用程序启动时,该按钮默认为焦点。但是还有没有可能将重点放在其他地方?
  • 您可能想尝试this 或将Button.Focusable 设置为false。更改 TabIndex 也可以解决它。所有这些方法都有不同的效果,因此请谨慎选择...
  • 如果我弄错了,我很抱歉,但是您发送给我的第一件事不是与我真正想要实现的相反吗?因为在这个线程中它是关于 WPF 在开始时不关注任何东西,但在我的情况下它确实
  • 你说得对,但在我写它的时候,我只知道它不是第一个应该关注的按钮:-)。但也许您可以在我链接的答案中将Binding 替换为x:null。无论如何,我并不是要写一个完整的答案。只是想为您指明正确的方向。

标签: c# wpf visual-studio wpf-controls


【解决方案1】:

您可以尝试在 Window.Loaded 事件上:

Keyboard.ClearFocus();

它对我有用。

注意:此方法只清除逻辑焦点,在任何情况下都没有用。

【讨论】:

    【解决方案2】:

    如果您描述的行为是焦点动画,您可以使用 Control.Focus() 函数将焦点设置在另一个控件中。

    another_control.Focus();
    

    您可以检查是否是焦点样式困扰您点击选项卡以将焦点设置到下一个控件。

    【讨论】:

    • 好吧,我不希望一开始就专注于控制
    【解决方案3】:

    您需要为按钮使用Style,在Style 中设置按钮的所有属性,例如BackgroundForeground,您还可以为按钮上的各种事件分配triggers。这将防止按钮持续闪烁。

    下面是上面的示例(默认情况下,我将按钮设置为蓝色)

    在 XAML 中

       <Page>
            <Page.Resources>
                    <Style TargetType="{x:Type Button}" x:Key="NonFocusButton">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type Button}">
                                <Border Name="Border" 
                            Background="Blue"
                            BorderBrush="Blue">
                                </Border>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="Button.IsPressed" Value="True">
                                        <Setter TargetName="Border" Property="BorderBrush" Value="Blue" />
                                    </Trigger>
                                    <Trigger Property="IsMouseOver" Value="true">
                                        <Setter TargetName="Border" 
                                  Property="Background" Value="Blue" />
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
    
            <Button x:Name"myButton" Style="{StaticResource NonFocusButton}" /> //Assign style here
            </Page.Resources>
        </Page>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-15
      • 2013-08-09
      • 1970-01-01
      • 1970-01-01
      • 2012-01-22
      • 1970-01-01
      相关资源
      最近更新 更多