2016-09-20 28 views
0

XmlDataProviderのアイデンティティを返すViewModelクラスを作成しました。ここで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は、このデータプロバイダとのXPath =「ブック/ブック」のようなものです:

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

問題は私もリストで選択した項目を取り戻す方法を見つけ出すことはできませんです。私の目標は、ViewModelにIDを取得するか、ボタンにバインドしてパラメータとして渡しますが、私には表示されません。

誰でも助けてくれますか?

答えて

0

使用CommandParameterは:

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

この方法で、あなたのSelectedItemがあなたのメソッドに渡されています。

+0

こんにちは、私は開始時にこの方法を試しましたが、明らかにSelectedItemにバインドされていません。私が正しく理解しているのは、ListBoxにDataContext = "{Binding DataProvider}"を設定しているためです。私はListBoxItemsが埋め込まれた通常のリストボックスを作成しようとしましたが、その場合はSelectedItemが実際に結び付けられます – CounterIt

+0

ああ、次にSelectedItemアイテムの部分を削除しようとするとよいでしょう: Belterius

+0

ありがとうございました – CounterIt

関連する問題