Проблема множественных привязок MVVM - PullRequest
1 голос
/ 20 сентября 2011

У меня есть следующий макет 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 Ответ

3 голосов
/ 20 сентября 2011

Нет, это не так.Но вы можете связать привязку с командой в вашей модели представления:

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