从属性绑定属性

本文关键字:属性 绑定 从属性 | 更新日期: 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; } }
  ....

从属性绑定属性

你的问题对我来说有点不清楚,但我试一试:

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

<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}"/