2014-09-12 2 views
1

나는 현재 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 

하지만이 아주 더러운 솔루션을 찾을 수 있습니다. 와

답변

0

시도 :

Public Shadows Property DataContext As Object Implements IView.DataContext 

그래서 당신 보기은 다음과 같습니다 당신은 종속성 속성 동작을 유지하고자하는 경우

Imports Microsoft.Practices.Prism.Mvvm 

Namespace Views 
    Class MyWindow 
     Inherits Window 
     Implements IView 

     Public Shadows Property DataContext As Object Implements IView.DataContext 
    End Class 
End Namespace 

그러나 실제 기본 클래스를 업데이트 할 수 있습니다 'DataContext 속성을 새 속성의 getter 및 setter에 추가하십시오.

당신은 this SO question에 대한 자세한 정보를 찾을 수 있습니다. "그림자"보기와 뷰 모델 사이의 배선으로

+0

가 작동하지 않습니다. getter/setter에서 기본 클래스 Datacontext 속성을 업데이트하면 좋은 해결책 인 것 같습니다. 고맙습니다. –

+0

@ RaphaëlGodart 그래, 그게 내가 의존성 속성 동작을 유지하는 것이었다. 도와 줘서 다행 :) – jnovo