[英]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.