C# 除单个控件外,将背景设为黑色
我有这个:C# 除单个控件外,将背景设为黑色,c#,.net,wpf,vb.net,xaml,C#,.net,Wpf,Vb.net,Xaml,我有这个: <Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <Grid> <StackPanel Orientation="Horizontal"> <St
<Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<StackPanel Orientation="Horizontal">
<StackPanel Width="100" Margin="20">
<CheckBox x:Name="cbFoo1" Content="Foo"/>
<TextBlock Text="Foo"/>
<TextBox />
</StackPanel>
<StackPanel Width="100" Margin="20">
<CheckBox x:Name="cbFoo2" Content="Foo"/>
<TextBlock Text="Foo"/>
<TextBox />
</StackPanel>
</StackPanel>
<Rectangle Fill="#BF000000" x:Name="rOverlay"/>
</Grid>
</Window>
我想用参数argControls生成一个函数foo,该函数使rOverlay覆盖窗口中除argControls之外的所有控件。有人知道怎么做吗?如果要隐藏控件,请将其可见性设置为“折叠”。选项1-绘制顺序 虽然有点麻烦,但实现这一点最简单的方法可能是将希望覆盖的控件放在矩形之前,并将希望可见的控件放在矩形之后 使用Panel.ZIndex属性更好,而且不是黑客。这允许您控制UI元素的绘制顺序,而不考虑它们的定义顺序。这可以通过如下设置Panel.ZIndex来实现: rOverlay设置为任意值,如1 控件的覆盖范围低于rOverlay,如0 控件对高于rOverlay的对象可见,如2 但是,应该注意的是,控件的任何透明区域仍将在其后面显示黑色矩形。这可以指定背景色,也可以使用此处提供的另一个选项 选项2-剪裁
另一个更复杂的方法是将矩形的“剪辑”属性设置为仅包含要填充的区域的几何体。这可能通过使用的实例来实现。这将防止矩形在剪裁区域之外的区域上绘制任何内容。将所有控件移到后面,将覆盖层放在顶部,并将所需控件移到前面?我想从代码后面执行此操作。另外,如果控件位于StackPanel或DockPanel中,它将不起作用。你说得对,我在那里评论得太快了!很抱歉点击控件怎么样?@HenkHolterman我将从code-behind.Nope禁用它们。这不是我的问题。对不起,我不完全清楚你需要做什么。您是在试图更改控件的背景颜色,还是实际上将它们隐藏起来,以便用户看不到它们?