나는 현재 PRISM ViewModelLocator을 사용하여 MVVM 패턴을 사용하여 VB.NET에서 PRISM 5 응용 프로그램을 짓고 있어요에서 개의 IView 불가능의 구현입니다. PRISM ViewmodelLocator는 모든 뷰가 Microsoft.Practises.Prism.Mvvm.IView 인터페이스를 구현해야합니다. 이 인터페이스는 DataContext라는 하나의 속성 만 포함합니다.PRISM 5 : VB.NET에서 ViewModelLocator보기
View (FrameworkElement)는 이미 DataContext 속성을 가지고 있으므로 C#에서는 DataContext 속성 (암시 적 인터페이스 구현)에 대한 새 구현을 제공하지 않고 View 클래스 이름 뒤에 "IView"를 추가하는 것으로 충분합니다. 마술에 의해 ViewModel은 Datacontext 속성을 통해 뷰에 자동으로 연결됩니다. 당신이 암시 적 인터페이스 구현을 할 수 VB.NET에서
이 불가능합니다. 클래스의 맨 위에 "Implements IView"를 추가하면 VB는 DataContext 속성에 대한 구현을 제공하도록 지시합니다. FrameworkElement에는 Datacontext 속성이 이미 있으므로 VB는 Datacontext1 속성에 대한 구현을 자동으로 추가합니다. 물론, ViewModel을 View에 연결하는 것은 작동하지 않습니다. 다음은 내 코드입니다 :
보기
Imports Microsoft.Practices.Prism.Mvvm
Namespace Views
Class MyWindow
Inherits Window
Implements IView
Public Property DataContext1 As Object Implements IView.DataContext
End Class
End Namespace
뷰 모델
Imports Microsoft.Practices.Prism.Mvvm
Namespace ViewModels
Public Class MyWindowViewModel
Inherits BindableBase
Private mTheText As String = "This is the text."
Public Property TheText() As String
Get
Return Me.mTheText
End Get
Set(ByVal value As String)
SetProperty(Of String)(Me.mTheText, value)
End Set
End Property
End Class
End Namespace
이 주위에 가장 좋은 방법은 있습니까?
는 지금까지 모두 나는 내보기의 생성자에이 줄을 추가한다 작동하는 것 같다 발견
Datacontext = Datacontext1
하지만이 아주 더러운 솔루션을 찾을 수 있습니다. 와
가 작동하지 않습니다. getter/setter에서 기본 클래스 Datacontext 속성을 업데이트하면 좋은 해결책 인 것 같습니다. 고맙습니다. –
@ RaphaëlGodart 그래, 그게 내가 의존성 속성 동작을 유지하는 것이었다. 도와 줘서 다행 :) – jnovo