如何将一个程序集中的属性绑定到另一个程序集中的另一个属性

时间:2011-08-05 11:46:12

标签: c# .net wpf xaml

我在程序集“AssemblyX”中有一个类,其属性为“Comment”。我想将AssemblyX.Comment绑定到另一个程序集中的TextBlock.Text?

我试图以下列方式进行,但它无法正常工作。

<Window xmlns:cc="clr-namespace:SomeNamespace;assembly=AssemblyX">
<TextBlock Text={Binding cc:Comment}/>
...

3 个答案:

答案 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"; } }
}