2016-09-20 3 views
0

Я создал класс ViewModel, который возвращает istance XmlDataProvider, я привязываюсь к нему здесь, в ListBox, DeleteCommand (ICommand).WPF (MVVM) удалить элемент из списка

<ListBox x:Name="Books" Margin="0,0,0,10"  
        DataContext="{Binding DataProvider}" 
        ItemsSource="{Binding}"      
        SelectionMode="Single"> 
    </ListBox> 

<Button Command="{Binding DeleteCommand}">Remove item</Button> 

В списке ботов загружаются данные XML, и кнопка выполняет команду DeleteCommand просто отлично.

Мой Xml, как это и в DataProvider XPath = «Книги/Книга»:

<Books> 
    <Book Id="1">The book</Book> 
    ... 
</Books> 

Проблема в том, что я не могу даже понять, как вернуть выбранный элемент в списке. Моя цель - получить идентификатор в ViewModel или привязать его к кнопке и передать ее как параметр, но я не вижу, как это сделать.

Кто может помочь?

ответ

0

Используйте CommandParameter:

<Button Command="{Binding DeleteCommand}" CommandParameter="{Binding ElementName=Books Path=SelectedItem}">Remove item</Button> 

Таким образом, вы будете иметь ваш SelectedItem передается вашему методу.

+0

привет, я пробовал этот путь в начале, но, по-видимому, не привязан к SelectedItem. Если я правильно понял, это потому, что я установил DataContext = "{Binding DataProvider}" в ListBox. Я попытался создать нормальный Listbox со встроенными ListBoxItems, и в этом случае SelectedItem связывает штраф на самом деле – CounterIt

+0

Ну, тогда вы могли бы попытаться удалить часть элемента SelectedItem и просто сделать: Belterius

+0

Спасибо большое, теперь он работает таким образом – CounterIt

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