物业的绑定财产

时间:2013-10-02 12:30:41

标签: c# wpf

如果要显示的属性是属性的属性,我该怎么做绑定,如下例所示:

的Xaml:

<TextBox Text="{Binding log.Message}"/>  ????

在定义为Datacontext的类中,我声明了一个日志变量:

public Log log = new Log();

Log类:

public class Log : INotifyPropertyChanged
{
    public static string Message{ get { return message; } }
  ....

3 个答案:

答案 0 :(得分:4)

我的问题有点不清楚,但我试一试:

如果DataContextLog类的实例,并且该属性是非静态的。比正确的绑定是

<TextBox Text="{Binding Message}"/> 

从那里你可以轻松地嵌套你的绑定。例如,如果Log具有类的实例

public class Log {
     public MessageHandler Message {get;set;}
}

会有一个属性LocalizedMessage,它只是

<TextBox Text="{Binding Message.LocalizedMessage}"/> 

如果要绑定到Message属性当前为的静态属性:

<TextBox Text="{Binding Source={x:Static MyNs:Log.Message}, Path=.}"/> 

答案 1 :(得分:0)

您无法将静态属性绑定到XAML。只有.Net 4.5才能实现这一点,甚至可以通过一些工作来实现。见:WPF 4.5 – Part 9 : binding to static properties。你可以找到那里的路。

如果您无法使用.Net 4.5,请查看this SO thread以获取其他解决方法。

答案 2 :(得分:0)

你写的问题是Message是一个静态属性,所以你不应该从日志对象中获取它,而是从Log类中获取它:

<Window.Resources> <local:Log x:Key="logClass"/> </Window.Resources>

<TextBox Text="{Binding Source={StaticResource logClass}, Path=Message}"/