我在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来处理浏览,并具有查看系统,该系统利用多种系统来显示不同类型的文档。