진실을 말하면, 나쁘지 않다고 생각하지 않았으며 매우 실행 가능한 솔루션이라고 생각합니다.
이 간단하고, 데이터 모델 객체를 가지고 : 쉽게를 통해 간단한 텍스트 상자에 바인딩
Public Class SimpleItemViewModel
Implements INotifyPropertyChanged
Private _item As String
Public Property Item As String
Get
return _item
End Get
Set (value as string)
_item = value : OnPropertyChanged("Item")
End Set
End Property
Protected Overridable Sub OnPropertyChanged(propChange as string)
Raise Event PropertChanged(me, new PropertyChangedEventArgs(propChange))
End Sub
Public Event PropertyChanged(sender as object, e as PropertyChangedEventArgs)
End Class
: 나는 더러운 플래그를 가지고 싶다면,
<Textbox Text="{Binding Item}" />
추가, 난 쉽게 할 수 OnPropertyChanged 하위에 플래그를 설정하고 사용자 변경 사항을 저장해야하는지 여부를 쉽게 결정할 수 있습니다.
데이터 액세스 레이어와이 항목을 보유하고있는 UI 사이에있는 일련의 클래스를 갖는 것이 가장 쉽다는 것을 알게되었습니다. 비즈니스 로직과 DAL이 원자적인 값보다는 이러한 클래스를 전달하도록 할 수도 있습니다.
클래스의 속성이 변경되면 언제든지 PropertyChanged 이벤트를 발생시켜야합니까? 지루해 보인다. 바인딩하려는 클래스의 코드가없는 경우에는 어떻게해야합니까? 이게 지저분 해지지 않니? –
GordonG의 경우 Model-View-ViewModel 패턴을 사용하는 것이 좋습니다. ViewModel (중간 계층)은 기본적으로 기본 Model 속성을 다시 노출 할 수 있도록하지만 View 데이터 바인딩은 ViewModel의 다시 노출 된 속성 (모델이 아닌!)을 다시 표시 할 수있게하여이 문제를 처리합니다. – Adrian
(위에서 계속) ViewModel은 INotifyPropertyChanged를 구현하고 'get'호출의 경우 기본 모델의 값을 속성별로 반환하지만 'set'호출에서는 기본 모델의 속성 값을 설정하고 PropertyChanged를 발생시켜 View에서 볼 수 있도록합니다. 갱신 된 값 – Adrian