9
我在Windows窗體中編寫測試應用程序。它具有TextBox的簡單形式,需要實現DataBinding。我已經實現了FormViewModel類來保存我的數據,並有1個類用於我的業務數據 - TestObject。數據綁定是否支持Windows窗體中的嵌套屬性?
業務數據對象:
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));
}
}
視圖模型:
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.DataBindings.Add("Text", ViewModel, "CurrentObject.TestPropertyString");
令人驚訝的是,它不起作用!當我更改CurrentObject或更改TestPropertyString屬性時,沒有任何更改。
但它的偉大工程,當我使用:
TextBox.DataBindings.Add("Text", ViewModel.CurrentObject, "TestPropertyString");
所以我的問題是:是否支持數據綁定嵌套的屬性?
謝謝你的解釋!
所以我將無法以這種方式使用它:「CurrentObject.TestPropertyString」?我在WinForms中的代碼有什麼替代方法? – 2012-01-17 13:46:47
@MaksimGladkov我用工作代碼更新了答案。也許你沒有聲明屬性。 – LarsTech 2012-01-17 14:11:55
奇怪,但這不適合我。無論如何沒有任何反應 – 2012-01-17 15:09:21