MVVM多重绑定问题

时间:2011-09-20 15:56:16

标签: silverlight binding mvvm-light

我有以下XAML布局

<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>

我想将命令绑定到按钮,这需要我将按钮的数据上下文设置为ViewModel。

但我想将DataTemplate数据上下文中的数据绑定到命令参数。

可以在同一个控件中有两个数据上下文吗?

1 个答案:

答案 0 :(得分:3)

不,不是。但是您可以将绑定与viewmodel中的命令相关联:

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

此处“Root”是您使用此代码的用户控件或页面的名称:

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

此页面将绑定到您的视图模型,因此您可以使用DataContext来访问它。这就是您在绑定中使用路径DataContext.MyCommand的原因。 最后,在您的viewmodel中,您应该拥有以下命令:

public ICommand MyCommand