0

我正在寻找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>
4

2 回答 2

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.Closing,更简单的解决方案是覆盖Window.OnClosing

protected override void OnClosing(CancelEventArgs e)
{
    e.Cancel = true;  // Cancels the close request
    base.OnClosing(e);
}

这样,您不必对 XAML 进行任何更改。

于 2013-07-24T10:06:40.080 回答
0

也许只是处理窗口的关闭事件并放e.Cancel = true

于 2013-07-24T10:07:08.187 回答