【发布时间】:2010-10-26 20:23:24
【问题描述】:
我有以下单例类,其中包含以下属性:
public class Manager : INotifyPropertyChanged
{
public bool IsOnline
...
public static Manager Instance
...
}
在标记中,我正在尝试根据此在线属性更改按钮的颜色:
<Button.Style>
<Style TargetType="{x:Type Button}">
<Style.Triggers>
<DataTrigger Value="True">
<DataTrigger.Binding>
<Binding Source="{x:Static storage:Manager.Instance}" Path="IsOnline"/>
</DataTrigger.Binding>
<Setter Property="Background" Value="#8000FF00"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
此绑定<Binding Source="{x:Static storage:Manager.Instance}" Path="IsOnline"/> 失败并出现异常:
无法将属性“Source”中的值转换为“System.Windows.Markup.StaticExtension”类型的对象。
我已经对“存储”命名空间进行了四次检查;我知道它既被引用又是正确的。 Instance 属性是静态的,所以我不明白为什么这个绑定会失败。我对所有静态属性都有类似的绑定,一切都很好。
有什么想法吗?
【问题讨论】:
-
如果使用
会失败吗? -
是的,在这种情况下它也会失败。