从属性绑定属性
本文关键字:属性 绑定 从属性 | 更新日期: 2023-09-27 18:33:38
如果要显示的属性是属性中的属性,我该如何进行绑定,如下所示:
Xaml:
<TextBox Text="{Binding log.Message}"/> ????
在定义为 Datacontext 的类中,我声明了一个日志变量:
public Log log = new Log();
日志类:
public class Log : INotifyPropertyChanged
{
public static string Message{ get { return message; } }
....
你的问题对我来说有点不清楚,但我试一试:
如果DataContext
是 Log
类的实例,并且该属性是非静态的。比适当的绑定将是
<TextBox Text="{Binding Message}"/>
从那里,您可以轻松嵌套绑定。例如,如果 Log 将具有类的实例
public class Log {
public MessageHandler Message {get;set;}
}
这将具有属性LocalizedMessage
,它只是
<TextBox Text="{Binding Message.LocalizedMessage}"/>
如果要绑定到静态属性(消息属性当前为):
<TextBox Text="{Binding Source={x:Static MyNs:Log.Message}, Path=.}"/>
不能将静态属性绑定到 XAML。只有 .Net 4.5 可以做到这一点,甚至需要一些工作。请参阅:WPF 4.5 – 第 9 部分:绑定到静态属性。你可以找到那里的路。
如果无法使用 .Net 4.5,请查看此 SO 线程以获取其他解决方法。
你写的东西的问题在于Message
是一个静态属性,所以你不应该从日志对象获取它,而是从 Log 类中获取它:
<Window.Resources>
<local:Log x:Key="logClass"/>
</Window.Resources>
<TextBox Text="{Binding Source={StaticResource logClass}, Path=Message}"/