2011-09-20 4 views
1

나는 다음과 같은 XAML 레이아웃을 가지고MVVM 여러 바인딩 문제

<DataTemplate x:Key="Reports"> 
    <Grid> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="Auto"/> 
     </Grid.ColumnDefinitions> 
      <TextBlock Text="{Binding Title}" Grid.Column="1"/> 
      <telerik:RadButton x:Name="Edit" 
           Command={Binding MyCommand} <!-- From View Model --> 
           CommandParameter={Binding Id}/> <!-- From DataTemplate --> 
     </Grid> 

    </DataTemplate> 

내가 뷰 모델에 버튼의 데이터 컨텍스트를 설정하는 저를 필요로 버튼에 명령을 결합하고 싶습니다.

그러나 DataTemplate 데이터 컨텍스트의 데이터를 명령 매개 변수에 바인딩하고 싶습니다.

동일한 컨트롤 내에 두 개의 데이터 컨텍스트가있을 수 있습니까?

답변

3

아니요. 그러나 당신은 당신의 ViewModel의 명령에 바인딩을 연결할 수 있습니다

<UserControl x:Name="Root" ... 

이 페이지 것 :

여기
<telerik:RadButton x:Name="Edit" 
    Command="{Binding DataContext.MyCommand, ElementName=Root}" <!-- From View Model --> 
    CommandParameter="{Binding Id}"/> <!-- From DataTemplate --> 

는 "루트"사용자 정의 컨트롤 또는 페이지의 이름이 코드를 사용하는 경우 귀하의 뷰 모델에 바인딩되므로 DataContext를 사용하여 액세스 할 수 있습니다. 그래서 바인딩에 DataContext.MyCommand 경로를 사용합니다. , 난 당신이 게시 한 코드를 사용하는 방법을 정확히 이해하기 위해 사투를 벌인거야 답장을 보내

public ICommand MyCommand 
+0

덕분에 당신은 그것에서 정교하게 할 수있을 것입니다 : 마지막으로, 당신의 ViewModel에, 명령이 있어야합니다 조금 부탁해. 감사. – Midimatt

+0

나는 조금 더 대답을 확장했다. 지금 그것이 더 명확한 지 알려주세요. :) – alf

+0

고맙습니다. 지금은 이해하고 있습니다. – Midimatt