2010-04-19 11 views
0

마스터/하위보기 및 사용자 정의 종속성 속성을 구현할 때 이상한 문제가 발생합니다. 내 masterView 내MVVM Light - 마스터/하위보기 및 종속성 속성

다음과 같이 내가 XAML에 선언적으로 뷰 모델을 바인딩 해요 :

DataContext="{Binding MainViewModelProperty, Source={StaticResource Locator}}" 

를 다음과 같이 내 MainViewModel 내가 ItemsControl에 바인딩하고 관찰 모음 노출되어

 <ItemsControl ItemsSource="{Binding Lists}" Height="490" Canvas.Top="10" Width="70"> 
      <ItemsControl.ItemTemplate> 
       <DataTemplate> 
        <Canvas> 
        <local:TaskListControl Canvas.Left="{Binding ListLeft}" 
              Canvas.Top="{Binding ListTop}" 
              Width="{Binding ListWidth}" 
              Height="{Binding ListHeight}" 
              ListDetails="{Binding}"/> 
        </Canvas>  
       </DataTemplate> 
      </ItemsControl.ItemTemplate> 
     </ItemsControl>  

TaskListControl은 차례대로 ViewModel을 선언하고 바인딩하며 ListDetails 속성에 대한 종속성 속성도 정의했습니다.

ListDetails 속성이 설정되어 있지 않으며 해당 뷰 모델에 대한 선언적 참조를 제거하면 종속성 속성의 콜백이 실행됩니다.

viewmodels 및 definig 종속성 속성에 선언적으로 바인딩하는 것과 충돌이 있습니까?

저는 MVVM Light의 혼합 가능성을 정말 좋아하며이 문제를 해결하기 위해 모든 도움이 필요합니다. 당신이 내 프로젝트의 소스를 받아 보려면

나는 내가 완전히 문제를 이해하지 확신 만의 시도하자 캐캐 당신이 "선언적으로 뷰 모델 바인딩"에 대해 이야기

+0

정확하게 무엇이 문제입니까? 당신은 여러 속성에 대해 많은 이야기를하고 있습니다. 그러나 적어도 이러한 모든 속성의 의도를 이해하지 못하고 많은 코드를 보지 않으며 구체적인 문제의 이름을 지정하지 않습니다. 어쩌면 그랬 겠지만, 나는 그것을 보지 못했습니다. 귀하의 질문 * "선언적으로 뷰 모델 및 정의 종속성 속성에 바인딩하는 충돌이 있습니까?"* 또한 꽤 일반적입니다 ... – gehho

답변

0

문의하시기 바랍니다, "in the XAML"대신 "in the code"에서와 같이 실제로 "imperatively"를 의미합니까?

이 경우 부모가 DataContext 상속을 무시하고 ListDetails 속성이 이제 DataTemplate의 DataContext가 아니라 TaskListControl DataContext를 참조한다는 것을 이해해야합니다.

<ItemsControl ItemsSource="{Binding Lists}" 
       Height="490" 
       Canvas.Top="10" 
       Width="70"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Canvas x:Name="RootPanel"> 
       <local:TaskListControl Canvas.Left="{Binding ListLeft}" 
             Canvas.Top="{Binding ListTop}" 
             Width="{Binding ListWidth}" 
             Height="{Binding ListHeight}" 
             ListDetails="{Binding ElementName=RootPanel, 
              Path=DataContext}"/> 
      </Canvas>  
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 

것이라고 작업 :

이와 예를 들어, 그러나 쉽게 변경할 수있다? 로랑