WPF - 如何正确地数据绑定子类属性

时间:2014-10-10 08:13:13

标签: c# wpf xaml data-binding

我在WPF中的数据绑定可能有一个非常愚蠢的问题。我有类型

的自定义异常
public class MyException : Exception
{
    public class ThrowingMethod
    {
        public class RegisteredMethod
        {
            public readonly string registeredName;

            // ...
        }

        public readonly RegisteredMethod regMethod;

        // ...
    }

    public readonly ThrowingMethod throwingMethod;
    // ...
}

是的,现在在我的wpf窗口中,我做了

public partial class ExceptionDisplay : Window
{
    private readonly IEnumerable<MyException> exceptions;

    public ExceptionDisplay(IEnumerable<MyException> exceptions)
    {
        InitializeComponent();
        this.exceptions = exceptions;

    }

    private void Window_Loaded_1(object sender, RoutedEventArgs e)
    {
        DataContext = this.exceptions.First();
    }
}

我在XAML中有两个标签:

<Label Name="Message" Content="{Binding Message}"/>

<Label Name="RegMethod" Content="{Binding Path=throwingMethod.regMethod.registeredName, Mode=OneWay}"/>
奇怪的是,Message正确绑定,但第二个标签仍为空,似乎没有任何东西绑定到它。 当我通过Window_Loaded_1中的代码手动设置值时,它可以正常工作,因此对象都已正确初始化。

为什么throwMethod.regMethod.registeredName没有绑定,我在这里做错了吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

您只能绑定到属性而不是类的字段。

你至少要写:

public ThrowingMethod throwingMethod { get; private set; }

registeredNameregMethod相同。

接下来的问题是你是否需要更新。所以INotifyPropertyChanged接口会很有用。