晚上好。我现在已经研究了我的问题大约两天了,并尝试了至少十几种问题。其中最后一个完全失败,所以我不打算在这里发布任何代码。
我需要的是无边框窗口的StackPanel。 StackPanel需要具有不透明背景,并且孩子需要具有透明背景。我需要透明度一直通过子元素,StackPanel和底层主窗口。
有没有人知道如何解决这个问题,我应该从哪里开始?我是一名中级程序员,在这里打了一个坚实的墙。我试图从Panel Class继承,超越了通常的嫌疑人; MeasureOverride,ArangeOveride,OnRender等。
我也有过一种想法,就是在父节点和所有子节点之间使用CombinedGeometry的某种形式。
提前致谢!!
答案 0 :(得分:0)
你可能缺少的是Window.AllowsTransparency="True"
。可悲的是,你必须建立自己的窗口标题和边框,因为{1} {}属性必须设置为WindowStyle
我为你创建了一个样本:
None
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
AllowsTransparency="True"
Background="Transparent"
WindowStyle="None"
WindowStartupLocation="CenterScreen">
<Border BorderBrush="Black" BorderThickness="1">
<DockPanel>
<Menu DockPanel.Dock="Top">
<MenuItem Header="Application">
<MenuItem Header="_Close" Click="MenuItem_Click"/>
</MenuItem>
</Menu>
<ToolBar DockPanel.Dock="Bottom">
<Button>sample button</Button>
</ToolBar>
<StackPanel>
... your whiteboard ...
</StackPanel>
</DockPanel>
</Border>
</Window>
答案 1 :(得分:0)
好的,所以经过许多,几个小时的蛮力“黑客攻击”,我已经设法找到了实现我需要的方法。
<Border Name="OuterBorder" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderBrush="Orange" BorderThickness="1.5">
<Border Name="FillerStrip" BorderBrush="Black" BorderThickness="20">
<Border Name="InnerBorder" BorderBrush="Orange" BorderThickness="1.5">
<StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Background="Transparent">
<local:GlassBoardControl BorderBrush="Orange" BorderThickness="2" AxisBrush="LawnGreen" AxisThickness="15" x:Name="screen" />
</StackPanel>
</Border>
</Border>
</Border>
现在我唯一的问题是,我是如何创建一个自定义面板作为它的边界?关于我应该从哪里开始的任何想法都将非常感激。