我创建了一个模态WPF窗口,如下所示:
以下是窗口的代码:
<Window x:Class="Dionysus.Core.Controls.ModalWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="ModalWindow" AllowsTransparency="True" Background="Transparent" WindowStyle="None">
<Grid Name="MainGrid">
<Rectangle Fill="Gray" Opacity="0.7" />
</Grid>
然后按如下方式添加“ErrorControl”:
MainGrid.Children.Add(uc);
问题是,一旦我展开堆栈跟踪,控件透明度也会发生变化:
我认为这与ScrollViewer
使用不正确的透明度有关,即使用Rectangle
而不是包含Window
。
我还将拥有Opacity
的{{1}}的{{1}}设置为1,然后绑定UserControl
:
ScrollViewer
任何人都可以帮助我吗?
-
更新
以下是插入Opacity
<ScrollViewer Background="WhiteSmoke" Opacity="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=UserControl}, Path=Opacity}">
的代码
UserControl
答案 0 :(得分:0)
如果您的窗口大小固定且无法调整大小,则可以使用以下技巧:
<Grid>
<Border BorderThickness="100" BorderBrush="Gray" Opacity="0.7">
<Grid Background="White" Grid.Column="1" Grid.Row="1" x:Name="contentPlaceHolder">
<TextBlock Text="HELLO WORLD" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Border>
</Grid>
但是,您的Window不太可能总是具有相同的大小,因此为了使其更具动态性,您可以按如下方式更改Window的布局:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="YourDesiredSize"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="YourDesiredSize"/>
<RowDefinition/>
</Grid.RowDefinitions>
<Rectangle Fill="Gray" Opacity="0.7" Grid.Row="0" Grid.ColumnSpan="3"/>
<Rectangle Fill="Gray" Opacity="0.7" Grid.Row="2" Grid.ColumnSpan="3"/>
<Rectangle Fill="Gray" Opacity="0.7" Grid.Row="1" Grid.Column="0"/>
<Rectangle Fill="Gray" Opacity="0.7" Grid.Row="1" Grid.Column="2"/>
<Grid Grid.Column="1" Grid.Row="1" Background="White" x:Name="contentPlaceHolder">
<TextBlock Text="HELLO WORLD" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Grid>
此窗口的结果放在另一个窗口的顶部或多或少看起来像这样:
然后,不是添加到MainGrid
,而是将UserControl添加到contentPlaceHolder
,或者您想要调用它:
contentPlaceHolder.Children.Add(uc);
答案 1 :(得分:0)
好的,所以我找到了一个适合我的解决方案,我确信它不是最好的,但它可能会帮助有问题的人。
问题是我添加到UserControl
的{{1}}中的控件是透明的,虽然我无法弄清楚原因,但我找到了一个简单的解决方法。
通过将Window
的{{1}}属性更改为所需的OpacityMask
颜色,即使控件不透明度发生变化,它也会被UserControl
屏蔽掉你供应。
Background
希望它有所帮助!