2015-01-08 62 views
0

我有以下标记。无法绑定到一个属性

<TextBox x:Name="Address" 
     Text="{x:Static local:MainWindow.Boundie.SomeProp}" 
</TextBox> 

在后面的代码中我有一个像这样的静态属性。

static Something Boundie { get; set; } 

public class Something { public String SomeProp { get; set; } } 

的问题是,它是耿耿于怀“预期类型”当我将鼠标悬停在Boundie和“静态成员预计”当我将鼠标悬停在SomeProp。当我忽略后者时,它只会抱怨预期类型为字符串,但它只能看到某些东西

如何绑定到静态成员的非静态字段?

为什么我想这样做?因为我想重用域对象模型,并且这些类没有配备静态成员。

+1

静力学在所有绑定到它?你不应该绑定到你的视图模型吗? – nvoigt

+0

@nvoigt好问题。因为那需要我开发整个视图模型。而且由于数据库模式已经被重建,这是很多工作。我想向客户展示这个小小的行为。视图模型的工作可以在以后完成。 –

回答

2

SomeProp是实例属性,所以你不能使用x:Static访问。您可以使用静态Source组合Path

<TextBox ... 
     Text="{Binding 
      Source={x:Static local:MainWindow.Boundie}, 
      Path=SomeProp}"/> 
为什么你绑定
+0

我冒昧地重新格式化。灿烂的清晰度:+1。 –

0
<object property="{x:Static prefix:typeName.staticMemberName}" .../> 

http://msdn.microsoft.com/en-us/library/ms742135.aspx

+0

它上面的行包含要领。 –

+0

这可能是如此,但对于那些仍然试图在绑定沼泽中正确行事的人来说,这有点令人费解。不要说这是错误或误导。只是在阅读完之后,我做的比头脑打字更划算。 :) –