C# WPF列表框将SelectedItem值发送到viewmodel
在主窗口中,有一个列表框,其中填充了一些数据。这些数据是从viewmodel加载的,所以我没有任何代码隐藏 main window.xamlC# WPF列表框将SelectedItem值发送到viewmodel,c#,.net,wpf,C#,.net,Wpf,在主窗口中,有一个列表框,其中填充了一些数据。这些数据是从viewmodel加载的,所以我没有任何代码隐藏 main window.xaml <ListBox Name="listBoxData" DataContext="{Binding Source={StaticResource MainWindowViewModelDataSource}}" ItemTemplate="{DynamicResource BookTemplate}"
<ListBox Name="listBoxData"
DataContext="{Binding Source={StaticResource MainWindowViewModelDataSource}}"
ItemTemplate="{DynamicResource BookTemplate}"
ItemsSource="{Binding Books}" />
我如何知道在列表框中选择了哪本书(使用ICommand
),并将其属性(例如int-Id
)发送到viewmodel
,以进行进一步处理?将
SelectedBook
属性添加到ViewModel
类中,最好是您的Book
类型
然后在XAML中添加适当的绑定
:
<ListBox SelectedItem="{Binding SelectedBook}"/>
您的
SelectedBook
属性也必须调用适当的PropertyChanged
通知,以便绑定保持UI和ViewModel
同步。只需将SelectedItem
绑定到ViewModel中的某个属性(例如SelectedBook),无需使用ICommand即可
<ListBox Name="listBoxData"
ItemTemplate="{DynamicResource BookTemplate}"
ItemsSource="{Binding Books}"
SelectedItem="{Binding SelectedBook}" />
将
SelectedItem
绑定到ViewModel中的某些属性。SelectedItem
默认情况下双向绑定。
<ListBox SelectedItem="{Binding SelectedBook, Mode=TwoWay}"/>
<ListBox Name="listBoxData"
ItemTemplate="{DynamicResource BookTemplate}"
ItemsSource="{Binding Books}"
SelectedItem="{Binding SelectedBook}" />
int selectedBookId = SelectedBook.Id;