[英]WPF ListBox send SelectedItem value to the viewmodel
在MainWindow里面有一個填充了一些數據的列表框。 這些數據是從viewmodel加載的,所以我沒有任何代碼隱藏。
MainWindow.xaml
<ListBox Name="listBoxData"
DataContext="{Binding Source={StaticResource MainWindowViewModelDataSource}}"
ItemTemplate="{DynamicResource BookTemplate}"
ItemsSource="{Binding Books}" />
如何知道在列表框中選擇哪本書(使用ICommand
)並將其屬性(例如int Id
)發送到viewmodel
以進行進一步處理?
只需將SelectedItem
綁定到ViewModel中的某個屬性(比如SelectedBook ),就不需要為此提供ICommand 。
<ListBox Name="listBoxData"
ItemTemplate="{DynamicResource BookTemplate}"
ItemsSource="{Binding Books}"
SelectedItem="{Binding SelectedBook}" />
只需訪問ViewModel屬性,您就可以獲得該書的ID:
int selectedBookId = SelectedBook.Id;
將SelectedBook
屬性添加到ViewModel
類,最好是Book
類型。
然后在你的XAML中,添加適當的Binding
:
<ListBox SelectedItem="{Binding SelectedBook}"/>
如果它起作用,你可以強制它成為TwoWay
綁定,如下所示:
<ListBox SelectedItem="{Binding SelectedBook, Mode=TwoWay}"/>
您的SelectedBook
屬性必須調用正確的PropertyChanged
通知,以便綁定使UI和ViewModel
保持同步。
羅希特是對的
將列表框的選定項綁定到viewmodel中的屬性:
像這樣:(使用名為SelectedBook的屬性)
<ListBox Name="listBoxData"
DataContext="{Binding Source={StaticResource MainWindowViewModelDataSource}}"
SelectedItem="{Binding Path=SelectedBook, Mode=TwoWay}"
ItemTemplate="{DynamicResource BookTemplate}"
ItemsSource="{Binding Books}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.