为什么WPF渲染折叠或隐藏控件

本文关键字:隐藏 控件 折叠 WPF 为什么 | 更新日期: 2023-09-27 17:50:49

我正在测试WPF应用程序。我在这个项目上的表现有问题。

为什么WPF渲染折叠或隐藏控件?

我的CPU使用率不会改变,如果我崩溃或可见控件。

的例子:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <StackPanel Orientation="Horizontal" Height="30">
        <Button Content="visible" Margin="5" Padding="5,0,5,0" Click="Button_Click"/>
        <Button Content="hidden" Margin="5" Padding="5,0,5,0" Click="Button_Click_1"/>
        <Button Content="collapsed" Margin="5" Padding="5,0,5,0" Click="Button_Click_2"/>
    </StackPanel>
    <StackPanel Grid.Row="1" x:Name="renderStack">
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
        <ProgressBar Height="30" IsIndeterminate="True"/>
    </StackPanel>
</Grid>

背后的代码:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        renderStack.Visibility = System.Windows.Visibility.Visible;
    }
    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        renderStack.Visibility = System.Windows.Visibility.Hidden;
    }
    private void Button_Click_2(object sender, RoutedEventArgs e)
    {
        renderStack.Visibility = System.Windows.Visibility.Collapsed;
    }

为什么WPF渲染折叠或隐藏控件

我知道这是旧的,但以防有人来看。我发现,即使对象被隐藏,当设置为不确定时,进度条仍然会在隐藏或折叠时占用处理器,因为它仍然在渲染动画。尝试使用。isindeterminate = False同时隐藏或折叠它,你应该看到cpu使用下降。

参考MSDN

Visibility不是Visible的元素不参与输入事件(或命令)时,不会影响"度量"或"安排"布局的传递不在制表符序列中,因此不会报告

可能问题在于GUI本身。您是否正在执行任何后台操作?