0

如果要显示的属性是属性中的属性,我该如何进行绑定,例如这种情况:

xml:

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

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

public Log log = new Log();

日志类:

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

3 回答 3

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=.}"/> 
于 2013-10-02T12:38:24.140 回答
0

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

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

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

于 2013-10-02T12:43:17.933 回答
0

不能将静态属性绑定到 XAML。只有 .Net 4.5 可以实现这一点,甚至可以通过一些工作来实现。请参阅:WPF 4.5 – 第 9 部分:绑定到静态属性。你可以找到那里的路。

如果您不能使用 .Net 4.5,请查看此 SO 线程以获取另一种解决方法。

于 2013-10-02T12:41:51.203 回答