c# - 我不想在 Expander Header 边缘看到虚线
问题描述
1-创建wpf应用程序。
2-将三个 WPF 窗口作为Window1、Window2和Window3添加到项目中
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}"
解决方案
您看到的虚线矩形由扩展器默认控件模板中 ToggleButton 上的 FocusVisualStyle 定义。您可以通过右键单击控件 (Visual Studio 2017) 并选择 Edit Template > Edit Copy 来克隆和编辑控件模板。然后更改 ExpanderHeaderFocusVisual 样式。