【问题标题】:I dont want to see dotted lines in Expander Header edges我不想在 Expander Header 边缘看到虚线
【发布时间】:2019-01-03 18:31:57
【问题描述】:

1- 创建 wpf 应用程序。

2- 将三个 WPF 窗口添加到项目中,分别为 Window1Window2Window3

3- 将以下 xaml 代码复制并粘贴到 MainWindow

<Grid>
    <Expander VerticalAlignment="Bottom" HorizontalAlignment="Left" ExpandDirection="Up" Background="Gold" >
        <Expander.Header>
            <TextBlock Text="Menu"/>
        </Expander.Header>
        <StackPanel Width="180">
            <Button x:Name="Button1" Height="25" Content="Button1"/>
            <Button x:Name="Button2" Height="25" Content="Button2"/>
            <Button x:Name="Button3" Height="25" Content="Button3"/>
        </StackPanel>
    </Expander>
</Grid>
</Window>

4- 将以下 vb.net 代码复制并粘贴到 MainWindow 后面的代码中。

Class MainWindow 
Private Sub MainWindow_KeyDown(sender As System.Object, e As System.Windows.Input.KeyEventArgs) Handles MyBase.KeyDown
    If e.Key = Key.F1 Then
        Dim myWindow1 As New Window1()
        myWindow1.Show()
    End If

    If e.Key = Key.F2 Then
        Dim myWindow2 As New Window2()
        myWindow2.Show()
    End If

    If e.Key = Key.F3 Then
        Dim myWindow3 As New Window3()
        myWindow3.Show()
    End If
End Sub
End Class

C# 代码在这里

    public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        if ((e.Key == Key.F1))
        {
            Window1 myWindow1 = new Window1();
            myWindow1.Show();
        }

        if ((e.Key == Key.F2))
        {
            Window2 myWindow2 = new Window2();
            myWindow2.Show();
        }

        if ((e.Key == Key.F3))
        {
            Window3 myWindow3 = new Window3();
            myWindow3.Show();
        }

    }
}

5- 运行这个项目,然后展开那个Expander,然后 F2,然后关闭 Window2

我的问题:

我不想在 Expander Header 边缘 中看到虚线,您可以在此处看到:https://prnt.sc/m2oi2n

注意:我尝试了以下代码,但它们不起作用。

IsTabStop="False" Focusable="False" FocusVisualStyle="{x:Null}"

【问题讨论】:

  • WPF 应用程序中的 Handles 子句?
  • 这是错的吗? Private Sub MainWindow_KeyDown(sender As System.Object, e As System.Windows.Input.KeyEventArgs) Handles MyBase.KeyDown
  • WPF 默认代码看起来像 private void Window_KeyDown(sender Object, e KeyEventArgs) 和 XAML KeyDown="Window_KeyDown" 如果你的工作我猜它没有错。
  • 上面的C#代码是从vb.net转换而来的。我是 vb.net 专家,但我对 C# 一无所知。
  • 在 vb.net Private Sub Window_KeyDown(sender As Object, e As KeyEventArgs) 在 XAML KeyDown="Window_KeyDown"

标签: c# wpf vb.net xaml


【解决方案1】:

您看到的虚线矩形是由扩展器默认控件模板中 ToggleButton 上的 FocusVisualStyle 定义的。您可以通过右键单击控件 (Visual Studio 2017) 并选择 Edit Template > Edit Copy 来克隆和编辑控件模板。然后更改 ExpanderHeaderFocusVisual 样式。

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2013-02-11
    • 2021-03-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    相关资源
    最近更新 更多