[英]How to make transparent WPF app without making it click-through?
你能告诉我如何在 WPF 中制作透明的 window 而不使其点击吗? 我已经为此苦苦挣扎了很长时间。
除了自定义 window 布局的常用AllowsTransparency="True"
和WindowStyle="None"
外,在 Window 上添加Background="#01FFFFFF"
。 任何未显式绘制的部分将显示为(几乎)透明(在深色背景下会有非常微弱的阴影),但这些区域将捕获鼠标点击,从而阻止点击其他 windows。
以下是如何创建具有空心部分的非矩形 window 的示例
空心视图.xaml
<Window
x:Class="CustomWindowChromeDemo.HollowView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
AllowsTransparency="True"
Background="#01ffffff"
WindowStyle="None">
<Grid
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Path
Data="F0 M 0,0 L 10,0 L 5,10 z M 4,2 A 1,1 0 0 0 3,3 L 3,4 A 1,1 0 0 0 4,5 L 6,5 A 1,1 0 0 0 7,4 L 7,3 A 1,1 0 0 0 6,2 z"
Fill="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"
Stretch="Uniform"
Stroke="{DynamicResource {x:Static SystemColors.ActiveBorderBrushKey}}"
StrokeThickness="4" />
<TextBlock
Margin="0,20,0,0"
HorizontalAlignment="Center"
FontSize="16"
Text="Click+Drag to move ..." />
<Button
Margin="0,0,0,80"
HorizontalAlignment="Center"
VerticalAlignment="Bottom"
Click="CloseButtonClick"
Content="Close" />
</Grid>
</Window>
HollowView.xaml.cs
public partial class HollowView
{
public HollowView()
{
InitializeComponent();
MouseLeftButtonDown += (s, e) => DragMove();
}
private void CloseButtonClick(object sender, System.Windows.RoutedEventArgs e)
{
Close();
}
}
用法
private void btnShowHollowWindow_Click(object sender, RoutedEventArgs e)
{
var hollowView = new HollowView
{
Width = 300,
Height = 300,
Owner = this,
WindowStartupLocation = WindowStartupLocation.CenterOwner
};
hollowView.ShowDialog();
}
有关 WPF 中自定义 windows 布局的更多详细信息,请查看我的博客文章。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.