Почему WPF поддерживает привязку к свойствам объекта, а не к полям?
У меня есть служба WCF, которая передает обновления статуса через такую структуру:
[DataContract]
public struct StatusInfo
{
[DataMember] public int Total;
[DataMember] public string Authority;
}
...
public StatusInfo GetStatus() { ... }
Я выставляю свойство в ViewModel следующим образом:
public class ServiceViewModel : ViewModel
{
public StatusInfo CurrentStatus
{
get{ return _currentStatus; }
set
{
_currentStatus = value;
OnPropertyChanged( () => CurrentStatus );
}
}
}
И XAML вроде так:
<TextBox Text="{Binding CurrentStatus.Total}" />
Когда я запускаю приложение, я вижу ошибки в окне вывода, указывающие, что свойство Total не может быть найдено. Я проверил и дважды проверил, и я набрал его правильно. Мне пришло в голову, что ошибки конкретно указывают на то, что «свойство» не может быть найдено. Таким образом, добавление свойства в структуру сделало его работоспособным. Но мне кажется странным, что WPF не может обрабатывать одностороннюю привязку к полям. Синтаксически вы обращаетесь к ним одинаково в коде, и кажется глупым создавать собственную модель представления только для структуры StatusInfo. Я что-то упустил в связывании WPF? Можете ли вы привязать к полю или свойство является единственным способом?