WPF按钮在设计或运行时无法正确显示

时间:2020-05-14 18:40:53

标签: c# wpf

我在WPF项目中遇到了一个奇怪的问题,即在设计过程中,表单上的按钮仅显示为白色。在运行时,它们会正确显示,但是当我加载外部WPF PdfViewer时,它们会使按钮变成白色(指定的PdfViewer来自DevExpress,尽管我不认为这是问题所在)。刚开始出现这种情况时,我认为这是图像的问题,但是当将它们放置在按钮之外时,它们仍然可以正常显示。

这并不是我窗口中的每个按钮都发生的,因为我定义了自定义样式的按钮似乎仍然可以正常工作。因此,这只会在我没有任何自定义样式的按钮上发生。这些按钮中的每个按钮都具有作为图像的内容,当它开始以这种方式运行时,该图像不再像按钮在其上呈现那样变得可见。

以下是发生问题的按钮示例:

<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Left" Margin="10,0,0,0">
    <TextBlock x:Name="SiteNameText" Text="Site Name" Style="{StaticResource TitleBarTextStyle}" Margin="0,0,3,0" />
    <Button x:Name="SiteContextButton" Width="20" Height="20" Click="ContextButton_Click" Background="{x:Null}" BorderBrush="{x:Null}" >
        <Button.ContextMenu>
            <ContextMenu x:Name="SiteContextMenu">
                <MenuItem x:Name="ConnectToServerMenuItem" Header="Connect to Server..." Click="ConnectToServerMenuItem_Click" />
            </ContextMenu>
        </Button.ContextMenu>

        <Image Stretch="Fill" Source="/FalconCentralClient;component/Images/ControlBar/ExpandArrow.png" HorizontalAlignment="Center" VerticalAlignment="Center"/>
    </Button>
</StackPanel>

这是一个没有问题的按钮的示例:

<Button x:Name="MinimizeButton" Click="MinimizeButton_Click" Style="{StaticResource TitleBarButtons}" >
    <Image Stretch="Fill" Source="/FalconCentralClient;component/Images/ControlBar/Win/ctrlbar_minimize.png"/>
</Button>

上面的按钮的特定样式似乎与此无关,因为我定义了几种自定义按钮样式,并且所有使用不同样式的按钮都可以正常工作。但是,这里只是一个完整的示例,是上面按钮的样式:

<Style x:Key="TitleBarButtons" TargetType="Button">
    <Setter Property="Background" Value="{DynamicResource Theme.TitleBar.ButtonColor}" />
    <Setter Property="Width" Value="45"/>
    <Setter Property="Height" Value="29"/>
    <Setter Property="Padding" Value="0"/>
    <Setter Property="OverridesDefaultStyle" Value="True"/>
    <Setter Property="Opacity" Value="{DynamicResource Theme.TitleBar.FontOpacity}" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="Button">
                <Border Name="Border"  BorderThickness="1" Background="{TemplateBinding Background}">
                    <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

以下是设计,运行期间以及损坏后的运行期间的外观的一些图像(快速说明,窗口中的颜色会有所不同,因为它们根据配置文件而有所不同)。

编辑:由于某种原因,它不会让我附加图像,因为它一直将其标记为代码,并且不允许我提交,因此我将仅对其进行描述。损坏时,它只是显示为白色块。该按钮内的任何内容均不会显示或正在被渲染,从而使其不可见。

如您所见,它在设计期间显示不正确,但在运行应用程序时以某种方式正确显示。但是,在顶部提到的外部PdfViewer加载后(因为它动态地添加到了Dock中),它随后断裂,看起来像在设计期间那样。我不知道是什么原因造成的,也不相信PdfViewer与它有关。我什至联系了DevExpress,他们不确定那是什么。在无法通过一个小示例程序解决此问题后,我得出结论,这一定是我的项目所特有的。就像我的按钮的默认样式已损坏,并导致发生此奇怪的问题。

有人对这可能是什么或如何解决有任何想法?

其他信息: 我正在使用Visual Studio 2019,项目是.NET Framework 4.8。该程序用作连接到我们的Web服务的客户端应用程序,并允许用户管理文档以及相关的元数据。我们使用CefSharp来处理浏览,并具有查看系统,该系统利用多种系统来显示不同类型的文档。

0 个答案:

没有答案