2012-03-16 6 views
1

Я не могу получить привязку к работе. Мой ActiveView имеет ListView (x: Name = «MyListView»), а также модель представления, поскольку это контекст данных.WPF DataBinding (CommandParameter не работает)

У меня есть следующие RibbonButton (RibbonControlLibrary):

<r:RibbonButton Label="Update Software" 
    LargeImageSource="/Ganymed.App.UI;component/Images/plain-update.png" 
    Command="{Binding ActiveView.DataContext.UpdateSoftwareCommand}" 
    CommandParameter="{Binding ActiveView.MyListView.SelectedItems}"/> 

Команда связывания сама работает отлично. Но я не могу заставить CommandParameter работать. Я хочу отправить выбранные элементы ListView ActiveView, чтобы решить, включать ли эту команду. Я что-то упускаю при привязке CommandParameter?

Для уточнения structue:

MainWindow.xaml (содержит RibbonButton, DataContext = MainWindowViewModel)

MainWindowViewModel.cs содержит свойство ActiveView

ActiveView (содержит MyListView, DataContext = ActiveViewViewModel)

ActiveViewViewModel.cs содержит UpdateSoftwareCommand

Любая помощь будет замечательной. Благодаря

+0

она не должна bee ActiveView.MyListView вместо ActiveView.ListView, потому что вы говорите, что это имя «MyListView»? – SvenG

+0

Привет, это была моя ошибка при копировании кода. Я изменил имя в примере, чтобы не смутить никого другого. –

+0

Как выглядит ваш код для UpdateSoftwareCommand? Если вы используете DelegateCommand, вы должны использовать DelegateCommand version – Nikolay

ответ

0

Одним из возможных вариантов:

CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type r:RibbonButton}}, Path=SelectedItems}" 

другой, вы можете просто добавить свойство SelectedItems к вашему ViewModel, привязать его и он всегда синхронизированы и готовы к команде, чтобы работать на

+0

Ваше решение не работает. Я предполагаю, что он не работает, поскольку ListView не является предком кнопки в визуальном дереве. –

+0

Извините, я хотел поставить в качестве ancenstor любой элемент управления, у которого есть привязка к вашей ViewModel –

Смежные вопросы