0

私はWPf、MVVMが初めてで、これがstackoverflowでの最初の質問です。私は自分の問題に取り掛かり、それから私がそれについてこれまでに発見したことを話し続けます.

ビューには、ProjectId、Name、Description、および IsFavourite(bool) を持つ ProjectList というリストにバインドされたリストボックスがあります。項目テンプレート内に、チェックボックスを指定しました。

チェックボックスがチェックされたら、ここまで正常に機能しているコマンドを実行することになっています。しかし、問題は、ProjectId をコマンド パラメーターとして送信する必要があることです。私はここで失敗しています。

このリンクから datacontextspy を使用してみました。Command と CommandParameter の異なる Datacontext

ここでは、チェックボックスがオンになっているアイテムの ProjectId ではなく、Viewmodel のデータコンテキストを取得できます。

これが私の.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>

これについて私を助けることができますか。ここで詳細が不足している場合はお知らせください。

前もってありがとう、プラシャント

4

2 に答える 2

0

MVVM と WPF に最適なフレームワークである MVVM Light Toolkit をお勧めします。

http://mvvmlight.codeplex.com/

詳細については、http://www.galasoft.ch/mvvm/を参照してください。

于 2013-07-02T20:51:09.200 に答える