我在程序集“AssemblyX”中有一个类,其属性为“Comment”。我想将AssemblyX.Comment绑定到另一个程序集中的TextBlock.Text?
我试图以下列方式进行,但它无法正常工作。
<Window xmlns:cc="clr-namespace:SomeNamespace;assembly=AssemblyX">
<TextBlock Text={Binding cc:Comment}/>
...
答案 0 :(得分:5)
您通常不绑定到类的属性,而是绑定到类的实例的属性。因此,在您的代码隐藏中,您将创建一个实例:
SomeNamespace.SomeClass instance = new SomeClass();
instance.Comment = "bla";
this.DataContext = intstance;
在你的xaml中绑定:
<TextBlock Text="{Binding Comment}"/>
在这种情况下,只要您当前项目引用该程序集,它在声明程序集SomeClass
中绝对无关紧要。 SomeClass
的名称也无关紧要。重要的是,您绑定的实例具有名为Comment
的属性。
如果您的类的属性是静态的,因此您没有实例,则可以绑定到静态属性,如下所示:
<TextBlock Text="{Binding cc:SomeClass.Comment}"/>
答案 1 :(得分:0)
如果您的类不是静态的,则必须为您的类创建一个实例。然后你可以绑定到一个属性。
看here也许它会帮助你
答案 2 :(得分:0)
要绑定到类的静态属性(可能是static命令),请尝试此
<MenuItem Header="{x:Static SomeClass.SomeProperty}"/>
背后的代码
public class SomeClass
{
public static string SomePropety
{ get { return "done"; } }
}