Midimatt
Midimatt

Reputation: 1114

MVVM Multiple Bindings Problem

I have the following XAML layout

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

I would like to bind a command to the button which would require me to set the data context of the button to the ViewModel.

But I would like to bind data from the DataTemplate data context to the command parameter.

Is is possible to have two data contexts within the same control?

Upvotes: 1

Views: 262

Answers (1)

alf
alf

Reputation: 18550

No, it's not. But you can associate the binding to a command in your viewmodel:

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

Here "Root" is the name of the user control or page where you are using this code:

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

This page would be bound to your view model, so you can use the DataContext to access it. That's why you use the path DataContext.MyCommand in the binding. Finally, in your viewmodel, you should have the command:

public ICommand MyCommand

Upvotes: 3

Related Questions