Как установить ButtonBaseExtensions.Command DataContext, а не изменять контекст кнопок - PullRequest
0 голосов
/ 01 апреля 2011

Я использую mvvm light в приложении WP7.У меня есть список с источником элементов коллекции объектов.ItemTemplate DataTemplate для списка содержит кнопку.Кнопка содержит текстовый блок, который отображает свойство связанного объекта.Как назначить команду для кнопки, не изменяя текст данных, текстовый блок или CommandParameter, который привязывает элемент к шаблону элемента?

<ListBox x:Name="listBox" ItemsSource="{Binding Main.SomeCollection}" >
     <ListBox.ItemTemplate>
          <DataTemplate>
            <Button 
                Command:ButtonBaseExtensions.Command="{Binding Main.MyCommand}"
                Cmmand:ButtonBaseExtensions.CommandParameter="{Binding}" />
                     <TextBlock Text="{Binding Title}"/>
            </Button>
          </DataTemplate>
      </ListBox.ItemTemplate>
</ListBox>

Спасибо

1 Ответ

3 голосов
/ 01 апреля 2011

Вам необходимо получить ссылку на DataContext, на котором расположена Команда. В MVVM Light мы обычно делаем это через ViewModelLocator. Поскольку ViewModelLocator представлен как глобальный ресурс (в App.xaml), вы можете сделать:

Command = "{Binding Main.MyCommand, Source = {StaticResource Locator}}"

Конечно, вы также можете сделать это визуально в Blend.

Ура, Laurent

...