0

WPF C# プロジェクトにチェックボックスのグリッドがあります。各 CheckBox のCommandプロパティはCheckBoxChangedCommand、次のように WView.xaml ファイルにバインドされています。

<CheckBox Grid.Row="0" IsChecked="true" x:Name ="CheckBox0" 
          Command="{Binding CheckBoxChangedCommand}" />
<CheckBox Grid.Row="1" IsChecked="true" x:Name="CheckBox1" 
          Command="{Binding CheckBoxChangedCommand}" />

CheckBoxes のいずれかがオンまたはオフになるたびに、 を呼び出しますCheckBoxChanged。1. CheckBox のグリッドの行番号と CheckBox の名前 ("CheckBox0" など) および 2. Checked 値 (true/false) のいずれかを示すポップアップ ウィンドウを表示するにはどうすればよいでしょうか。チェックボックス?

WViewModel.cs ファイルの私の CheckBoxChangedCommand は次のようになります。

public ICommand CheckBoxChangedCommand
{
    get
    {
        return new RelayCommand(param =>
        {
            MessageBox.Show("CheckBoxChanged!"); 
        });
    }
}

内部からIsCheckedトリガーされた CheckBoxのプロパティと行番号にアクセスするにはどうすればよいですか? ビューからビューモデルにデータを渡すにはどうすればよいですか?CheckBoxChangedCheckBoxChanged

4

1 に答える 1

1

ここでバインドをさらに行う必要があります。

まず、チェックボックスの IsChecked プロパティをビューモデルのプロパティにバインドする必要があります。

第二に、チェックされたチェックボックスの行番号を知る必要があるというあなたのコメントに基づいて、データバインディングを介してCheckBoxを含む「行」を生成する必要があると思います。そうすれば、それを表すオブジェクトを渡すことができます行を CommandParameter として CheckBoxChangedCommand に追加します。

次のようなものです:

<ListBox ItemsSource="{Binding MyItems}" />

そしてあなたのリソースで:

<DataTemplate DataType="{x:Type local:MyItemType}">
    <CheckBox IsChecked="{Binding IsChecked}" 
              Command="{Binding CheckChangedCommand}" 
              CommandParameter="{Binding}" />
</DataTemplate>

注: CheckChangedCommand は、アイテム レベルの ViewModel ではなく、おそらくメインの ViewModel にあるため、他のタイプのルックアップを実行して見つけさせる必要がある可能性があります。この例は簡単にするためのものです。

于 2012-06-15T18:32:50.083 に答える