如果要显示的属性是属性的属性,我该怎么做绑定,如下例所示:
的Xaml:
<TextBox Text="{Binding log.Message}"/> ????
在定义为Datacontext的类中,我声明了一个日志变量:
public Log log = new Log();
Log类:
public class Log : INotifyPropertyChanged
{
public static string Message{ get { return message; } }
....
答案 0 :(得分:4)
我的问题有点不清楚,但我试一试:
如果DataContext
是Log
类的实例,并且该属性是非静态的。比正确的绑定是
<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}"/