2011-09-20 106 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

不,不是。但是你可以在你的视图模型关联的绑定到一个命令:

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

这里的“根”是用户控件或页面的名称,你正在使用此代码:

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

本页面会绑定到你的视图模型,所以你可以使用DataContext来访问它。这就是为什么你在绑定中使用路径DataContext.MyCommand。 最后,在您的视图模型,你应该命令:

public ICommand MyCommand 
+0

感谢您的回复,我挣扎准确地了解如何使用您发布的代码,你将能够详细说明它请稍等。谢谢。 – Midimatt

+0

我稍微扩展了答案。让我知道如果它现在更清晰:) – alf

+0

谢谢,我明白现在和它的工作 – Midimatt