我在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没有绑定,我在这里做错了吗?
谢谢!
答案 0 :(得分:1)
您只能绑定到属性而不是类的字段。
你至少要写:
public ThrowingMethod throwingMethod { get; private set; }
registeredName
和regMethod
相同。
接下来的问题是你是否需要更新。所以INotifyPropertyChanged接口会很有用。