gpt4 book ai didi

c# - 打开对话框后更改 WPF 边框可见性

转载 作者:太空宇宙 更新时间:2023-11-03 13:20:52 25 4
gpt4 key购买 nike

我有一个边框控件,当我打开几个大文件时,我将其用作覆盖在主窗口上的加载屏幕。为此,我在创建对话框后将边框的可见性属性更改为可见。问题是边界从来没有真正出现过。这是不起作用的代码:

  var openFileDialog = new ViewerOpenFileDialog();
openFileDialog.ShowDialog();
LoadingScreen.Visibility = Visibility.Visible;
ViewerViewModel.OpenFile(openFileDialog.ParamFileName, openFileDialog.IdFileName);
LoadingScreen.Visibility = Visibility.Hidden;

关闭对话框后,边框永远不可见。

这段代码确实有效,但是:

   LoadingScreen.Visibility = Visibility.Visible;
var openFileDialog = new ViewerOpenFileDialog();
openFileDialog.ShowDialog();
ViewerViewModel.OpenFile(openFileDialog.ParamFileName, openFileDialog.IdFileName);
LoadingScreen.Visibility = Visibility.Hidden;

边框在我的文件加载后才可见,但是当我的对话框打开时它是可见的,这是不理想的。

这是我的边框的 XAML:

    <Border Name="LoadingScreen" Background="#80000000" VerticalAlignment="Stretch" Visibility="Hidden">
<Grid>
<TextBlock Margin="0" TextWrapping="Wrap" Text="Loading, Please Wait..." HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="30" FontWeight="Bold" />
</Grid>
</Border>

最佳答案

我假设,如果您关闭对话框,您的 WPF 窗体需要呈现控件,因为 OpenFileDialog 覆盖了部分 WPF 窗口。如果您从 CodeBehind 设置可见性,您需要告诉您的窗口,它必须再次渲染这个区域。

所以你可以尝试调用:

LoadingScreen.Invalidate(true);

在您的第一个示例中设置可见性之后。


由于您使用 WPF,可能会有更好的解决方案。

期望您的第一个示例在您窗口的 ViewModel 中,您可以添加一个带有 BackingField 的属性并实现 INotifyPropertyChanged(当然还要设置 DataContext):

private Visibility _loadScreenVisibility;

public Visibility LoadScreenVisibility
{
get { return _loadScreenVisibility; }
set
{
_loadScreenVisibility = value;
OnPropertyChanged("LoadScreenVisibility");
}
}

然后在您的 XAML 中您可以使用

<Border Visibility="{Binding Path=LoadScreenVisibility, UpdateSourceTrigger=PropertyChanged}" ... >
<... />
</Border>

关于c# - 打开对话框后更改 WPF 边框可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24289637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com