我正在寻找无法关闭或取消的强制ProgressBar
。我试图创建这个窗口,但它总是可以被ALT-F4关闭。
我希望在完成此过程后关闭窗口。
<Window x:Class="BWCRenameUtility.View.BusyProgressBar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BusyProgressBar" WindowStyle="None" SizeToContent="WidthAndHeight" WindowStartupLocation="CenterOwner" ResizeMode="NoResize">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Label Content="Exporting..."/>
<ProgressBar Width="300" Height="20" IsIndeterminate="True" Grid.Row="1"/>
</Grid>
</Window>
答案 0 :(得分:3)
您不希望取消隐藏ProgressBar
但不能取消隐藏Window
(无法关闭进度条)!
要执行此操作,请使用在关闭请求之后但在有效关闭之前发生的事件Window.Closing
。
在您的XAML中:
<Window x:Class="BWCRenameUtility.View.BusyProgressBar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BusyProgressBar" WindowStyle="None" SizeToContent="WidthAndHeight" WindowStartupLocation="CenterOwner" ResizeMode="NoResize"
Closing="BusyProgressBar_OnClosing">
<!-- Your code -->
</Window>
在BusyProgressBar
课程中,将CancelEventArgs.Cancel
设为true
取消关闭请求:
private void BusyProgressBar_OnClosing(object sender, CancelEventArgs e)
{
e.Cancel = true; // Cancels the close request
}
更轻松的解决方案是覆盖Window.OnClosing
,而不是使用事件Window.Closing
。
protected override void OnClosing(CancelEventArgs e)
{
e.Cancel = true; // Cancels the close request
base.OnClosing(e);
}
这样,您无需为XAML更改任何内容。
答案 1 :(得分:0)
也许只是处理窗口的关闭事件并放置e.Cancel = true