2017-09-13 31 views
0

我的WPF应用程序运行良好。然后我改变了一个按钮的背景颜色,它位于透明窗口内,保存并编译/运行。从那时起,我的运行程序引发Wpf启用透明度抛出Windows.Markup.XamlParseException

Windows.Markup.XamlParseException

带有附加信息的

System.Windows.UI.Visibility抛出异常

我无法撤消更改,现在我无法解决此问题,除非我删除“AllowTransparency = True”行。我需要这个窗口是透明的,我该如何解决这个问题?

这是麻烦块的代码。

<Window 
    x:Class="WPF.OverlayButtonField" 
    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:WPF" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    Title="OverlayButtonField" 
    Width="175" 
    Height="139" 
    AllowsTransparency="True" 
    Loaded="Window_Loaded" 
    ShowActivated="False" 
    ShowInTaskbar="False" 
    Topmost="True" 
    Visibility="Visible" 
    WindowStyle="None"> 

回答

4

你忘了提InnerException,这阐明这个问题:

出现InvalidOperationException:WindowStyle.None是WindowStyle的唯一有效值时AllowsTransparency是真实的。

问题在于,在将WindowStyle设置为None之前,您正在触摸Visibility。原则上,XML中的属性顺序无关紧要。在XAML中,实际上它有时可能很重要。这是一个例子。

Visibility="Visible"WindowStyle="None"后,或将AllowsTransparency="True"他们两人之后 - 或更好,但省略Visibility="Visible"完全。这是多余的。 Visible是默认值。

+0

编辑器似乎自己订购属性,所以我无法重新排序,但省略了Visibility解决了这个问题。实际上,它似乎已经添加了属性。无论哪种方式,谢谢。 –