我是WPF,MVVM的新手,這是我在stackoverflow中的第一個問題。 我會解決我的問題,然後我會繼續告訴我迄今爲止發現的情況。爲列表框內的複選框命令和命令參數WPF/MVVM綁定不同的源
在視圖中,我有一個列表框綁定到一個列表說ProjectList具有ProjectId,Name,Description和IsFavourite(bool)。在項目模板中,我給了一個複選框。
一旦複選框被選中,我應該執行一個正常工作的命令,直到這裏。但問題是我必須發送ProjectId作爲命令參數。我在這裏失敗。
我已經嘗試從此鏈接使用datacontextspy。 Different Datacontext for Command and CommandParameter
這裏我能夠獲得Viewmodel的datacontext,而不是其複選框被選中的項目的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>
可以幫我解決這個問題。如果我錯過了任何細節,請告訴我。
由於提前, 普拉香特
你的代碼是否正確?你將ListBox上的ItemsSource與在其中聲明的顯式項綁定在一起?其次,你的DataContextSpy類有「DataContent」屬性嗎?如果沒有,您的CommandParameter不能按預期工作。 –