WPF中无法使用的进度条

时间:2013-07-24 10:04:10

标签: wpf progress-bar

我正在寻找无法关闭或取消的强制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>

2 个答案:

答案 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