考虑以下示例
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
,其中包含“当使用Binding.Source时无法分配Binding.StaticSource”这一消息(这不是确切的翻译文本)其他一些机器。如果属性不是静态的,一切都有效。什么可能导致这种行为?
答案 0 :(得分:1)
我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();
}
}
答案 1 :(得分:0)
我猜你正在测试的机器有不同的框架版本,并且由于.NET 4.5中的这一新功能而导致不兼容:http://msdn.microsoft.com/en-us/library/bb613588%28v=VS.110%29.aspx#static_properties