设置绑定.路径在某些机器上抛出异常

本文关键字:机器 抛出异常 绑定 路径 设置 | 更新日期: 2023-09-27 18:13:39

考虑以下示例

public class Test
{
    private static string _property = "Success";
    public static string Property
    {
        get { return _property; }
        set { _property = value; }
    }

    public void Check()
    {
        var prop = new PropertyPath(this.GetType().GetProperty("Property"));
        var binding = new Binding();
        binding.Source = typeof(Test);
        binding.Path = prop;
    }
    public static void DoTest()
    {
        new Test().Check();
    }
}

当我调用Test.DoTest()时,它在我的机器上工作得很好,但抛出InvalidOperationException,消息如"不能分配绑定"。绑定时的静态源。Source is used"(这不是准确的翻译文本)在其他一些机器上。如果属性不是静态的,一切都可以工作。是什么导致了这种行为?

设置绑定.路径在某些机器上抛出异常

我4年前就在WPF工作了…我不记得了,但用这个可能有用。

public class Test : DependencyObject
{
    public static readonly DependencyProperty FilterStringProperty =
        DependencyProperty.Register("Property", typeof(string),
        typeof(Test), new UIPropertyMetadata("Success"));
    public string Property
    {
        get { return (string)GetValue(FilterStringProperty); }
        set { SetValue(FilterStringProperty, value); }
    }
    public static Test Instance { get; private set; }
    static Test()
    {
    }
    public void Check()
    {
        var prop = new PropertyPath(this.GetType().GetProperty("Property"));
        var binding = new Binding();
        binding.Source = this;
        //binding.Source = typeof(Test); //-- same thing
        binding.Path = prop;
    }
    public static void DoTest()
    {
        Instance = new Test();
        new Test().Check();
    }
}

我猜你正在测试的机器有不同的框架版本,你会因为。net 4.5中的这个新特性而遇到不兼容问题:http://msdn.microsoft.com/en-us/library/bb613588%28v=VS.110%29.aspx#static_properties