我是 WPf、MVVM 的新手,这是我在 stackoverflow 中的第一个问题。我将继续解决我的问题,然后我将继续讲述我到目前为止所发现的内容。
在视图中,我有一个列表框,它绑定到一个列表说 ProjectList,它具有 ProjectId、Name、Description 和 IsFavourite(bool)。在项目模板中,我给出了一个复选框。
选中复选框后,我应该执行一个在此处运行良好的命令。但问题是我必须将 ProjectId 作为命令参数发送。我在这里失败了。
我尝试使用此链接中的 datacontextspy 。命令和命令参数的不同数据上下文
在这里,我能够获取 Viewmodel 的数据上下文,而不是选中复选框的项目的 ProjectId。
这是我的 .xaml 代码。
<ListBox Name="lstProjects" ItemsSource="{Binding ProjectList}" HorizontalAlignment="Stretch" SelectedItem="{Binding SelectedProject}">
<ListBox.Resources>
<local:DataContextSpy x:Key="spy"/>
</ListBox.Resources>
<TextBlock Grid.Column="1" Grid.Row="1" Grid.RowSpan="3"
Text="{Binding ProjectDescription}" FontSize="10" TextWrapping="Wrap" />
<CheckBox Name="chkFavourites" Grid.Column="1" Grid.Row="1" Content="Favoutires"
CommandParameter="{Binding Path= DataContext,Source={StaticResource spy}}"
Command="{Binding Path=IsSelected}" DataContext="{Binding DataContext,
RelativeSource={RelativeSource FindAncestor, AncestorType=ListBox}}">
</CheckBox>
</ListBox>
可以帮我解决这个问题。如果我在这里遗漏任何细节,请告诉我。
提前致谢, 普拉尚斯