我有以下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数据上下文中的数据绑定到命令参数。
可以在同一个控件中有两个数据上下文吗?
答案 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