当调整大小时,WPF窗口闪烁

3

我有一个非常简单的窗口,使用以下XAML定义(目前视图模型中没有逻辑):

<Window x:Class="WpfViewer.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:WpfViewer"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="MainWindow"
        Width="525"
        Height="350"
        d:DataContext="{d:DesignInstance local:MainWindowVm}"
        mc:Ignorable="d">
    <Grid Margin="8">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="200" />
            <ColumnDefinition Width="8" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <StackPanel Grid.Row="0"
                    Grid.Column="0"
                    Grid.ColumnSpan="3"
                    Orientation="Horizontal" Margin="0,0,0,8">
            <TextBlock Text="Object" />
            <!--  breadcrumbs  -->
        </StackPanel>
        <Border Grid.Row="1"
                Grid.Column="0"
                BorderBrush="Black"
                BorderThickness="1" />
        <GridSplitter Grid.Row="1"
                      Grid.Column="1"
                      Width="8"
                      Background="{DynamicResource {x:Static SystemColors.WindowBrush}}"
                      ResizeBehavior="PreviousAndNext" />
        <Border Grid.Row="1"
                Grid.Column="2"
                BorderBrush="Black"
                BorderThickness="1" />
    </Grid>
</Window>

当用户调整窗口大小时,新的窗口区域会闪烁成黑色。 enter image description here 有没有什么方法可以防止这种闪烁?
我不认为这个问题是重复的。它涉及完全定制的窗口,带有动画效果。 防止WPF窗口闪烁
4个回答

6
我知道这是旧的,但正如接受的答案所建议的那样,这是由于调试工具。如果你不使用或依赖调试工具,禁用 XAML UI 调试工具将显著提高性能:

工具 > 选项 > 调试 > 通用 > 启用 XAML UI 调试工具

当然,在不使用调试器的情况下运行应用程序会显示出其实际性能。使用任何IDE作为调试器运行程序无疑会显着减慢程序,这是调试器与程序交互的结果,监视它所做的一切并监听异常等。

3

这是由于窗口的调试时间添加引起的。尝试在没有连接调试器的情况下运行它。


0

我曾经遇到过同样的问题,但是通过使用NuGet包edge.windowchrome(Microsoft.Windows.Shell的升级版)解决了它。

这帮助我消除了闪烁。

注意:它只能在最新版本的Windows 10(红石)上非常好地工作。


-2

使用UWP主机可能会解决您的问题。

请参见以下示例截图:

Screenshot

您可以从这里移除完整的标题栏。在mainwindow中添加属性ShowTitlebar="false"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接