Я пишу тестовое приложение в Windows Forms. Он имеет простую форму с TextBox и должен реализовать DataBinding. Я внедрил класс FormViewModel для хранения моих данных и имею 1 класс для своих бизнес-данных - TestObject. объектПоддерживает ли привязка данных вложенные свойства в Windows Forms?
бизнес-данных:
public class TestObject : INotifyPropertyChanged
{
private string _testPropertyString;
public string TestPropertyString
{
get
{
return _testPropertyString;
}
set
{
if (_testPropertyString != value)
{
_testPropertyString = value;
RaisePropertyChanged("TestPropertyString");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
ViewModel:
public class FormViewModel : INotifyPropertyChanged
{
private TestObject _currentObject;
public TestObject CurrentObject
{
get { return _currentObject; }
set
{
if (_currentObject != value)
{
_currentObject = value;
RaisePropertyChanged("CurrentObject");
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
public void RaisePropertyChanged(string propertyName)
{
if (PropertyChanged != null)
PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
недвижимости:
private FormViewModel _viewModel;
public FormViewModel ViewModel
{
get
{
if (_viewModel == null)
_viewModel = new FormViewModel();
return _viewModel;
}
}
Так что теперь я пытаюсь связать свои данные в TextBox, как это:
TextBox.DataBindings.Add("Text", ViewModel, "CurrentObject.TestPropertyString");
И удивительно, что это не сработает! Ничего не меняется при изменении CurrentObject или изменении свойства TestPropertyString.
Но он прекрасно работает, когда я использую:
TextBox.DataBindings.Add("Text", ViewModel.CurrentObject, "TestPropertyString");
Так что мой вопрос: вложенные ли поддержка связывания данных свойств?
Благодарим за разъяснения!
Так что я не буду иметь возможность использовать его таким образом: «CurrentObject.TestPropertyString»? Какая альтернатива моему коду в WinForms? –
@MaksimGladkov Я обновил ответ рабочим кодом. Возможно, у вас не было чего-то объявленного имущества. – LarsTech
Странно, но это не работает для меня. Ничего не происходит. –