c# - 将 UserControl 放在 Window Foreground 前面
问题描述
在我的 WPF 应用程序中,我有一个MainWindow
,如果单击一个按钮,则会UserControl
打开。我希望前景MainWindow
是黑色的(有一些不透明度)。到目前为止一切顺利,我设法做到了。但正如在其前景中UserControl
显示的一样。MainWindow
所以我想知道如何让 UC 处于领先地位,从而保持其前景。
这就是 UC 在 MainWindow 中的使用方式
<local:PopUp
x:Name="popUp"
Grid.Row="0"
Grid.RowSpan="3"
Grid.Column="1"
Grid.ColumnSpan="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="Hidden"/>
这是注意到按钮单击的部分,出现弹出窗口(UC)并且应该更改前景。
private void Add_Click(object sender, RoutedEventArgs e)
{
pop.Visibility = Visibility.Visible;
this.Foreground = Brushes.Black;
this.Opacity = 0.1;
}
解决方案
您的 usercontroll 被命名为 popUp 并且在您调用 pop 的按钮单击事件中可见。这可能是一个错字。
一般来说:如果你想让一个 UIelement 在其他 UIelements 之上,你只需要确保它是同一个容器中的最后一个 UIelement。
两个彩色网格的正确顺序示例和同一个网格中的一个按钮。(您可以玩这个并更改顺序几次以查看效果。)XAML:
<Grid x:Name="ContainerGridForAllthreeUIElements">
<Grid x:Name="BlueGrid" Background="Blue"/>
<Grid x:Name="RedGrid" Background="Red" Visibility="Collapsed" Margin="40">
<Viewbox>
<TextBlock Text=" I'll be back" Margin="10"/>
</Viewbox>
</Grid>
<Button
x:Name="Button_Toggle"
Content="Click to toggle"
Click="Button_Toggle_Click"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
后面的代码:
private void Button_Toggle_Click(object sender, RoutedEventArgs e)
{
if(RedGrid.Visibility == Visibility.Collapsed)
{
RedGrid.Visibility = Visibility.Visible;
BlueGrid.Opacity = 0.4;
}
else
{
BlueGrid.Opacity = 1;
RedGrid.Visibility = Visibility.Collapsed;
}
}
快乐编码。
推荐阅读
- c# - Landscape and Portrait in same pdf
- alexa - Can we fetch current location from 2nd generation Alexa device(model no:RS03QR)?
- javascript - 如何在需要('./
') 抛出错误:找不到模块'./ '? - laravel - 在 Laravel 5.8 上运行 db 种子时数组到字符串的转换异常?
- android - Android:onDisable 无法始终如一地工作
- delphi - 在你离开的地方继续'for'
- angular - FormControl init 方法有什么区别?
- java - Execute a .jar file using shell script
- c# - 不在管理员模式下时,在 TLS 1.2 连接期间无法创建 SSL/TLS 安全通道错误
- reactjs - How to use React Router's Link with a variable pathname?