对单身人士的静态绑定神秘失败

时间:2010-10-26 20:23:25

标签: wpf binding

我有以下单例类,它包含以下属性:

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属性是静态的,所以我不明白为什么这个绑定会失败。我对静态属性的绑定类似于完全正常工作。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

我已经构建了一个样本应用程序,它完全按照您所描述的内容进行操作,但它没有任何问题。您可以下载here

答案 1 :(得分:0)

您是否尝试过使用ValueConverter来检查StaticExtension获取的值? (参见this page上的方法2)

答案 2 :(得分:0)

我刚才有同样奇怪的问题! 解决方案:

必须在对该类进行任何XAML操作之前实例化该类!