2

たとえば、私はクラスの人を手に入れました:

class Person {
     string Name { get; set; }
}

wpfアプリケーションのメインウィンドウで、このクラスのObservableCollectionを取得し、これをテーブルに表示したいと思います。テーブルにメンバー(この場合は名前のみ)を表示するように機能しますが、何らかの理由でテーブルにボタンが表示されます。このボタンでは、xamlファイルの「command」プロパティを使用してICommandをバインドします。

それは私が働いているソファですが、どうすればオブジェクト「Person」自体をパラメータとしてコマンドに送信できますか?xamlのコマンドパラメーターをstring/intに使用しましたが、行に表示しているオブジェクトを送信するにはどうすればよいですか?

Thnx!

4

3 に答える 3

2
<Button Command="{Binding ElementName=}" CommandParameter={Binding ElementName=ObjectToSendWithCommand" />`

CommandParameter 値でオブジェクトを正しくバインドしていないようです。コード ビハインドまたは ViewModel (MVVM を使用している場合) のいずれかでパブリック プロパティにする必要があり、この値が変更された場合は、PropertyChanged イベントを利用する必要があります。

これが理にかなっていることを願っています。

于 2012-10-04T19:35:22.723 に答える
0

あなたのXamlファイルは次のようになります

<ListBox ItemsSource="{Binding MultipleCopyList, Mode=TwoWay}">
 <ListBox.ItemTemplate>
<DataTemplate>
      <StackPanel Orientation="Horizontal">
         <TextBlock Text="{Binding HeaderText,Mode=TwoWay}" Grid.Column="1"  /> 
      </StackPanel>
    </DataTemplate>
</ListBox>

あなたのトリガーは次のように見えます

<i:Interaction.Triggers>
<i:EventTrigger EventName="MouseLeftButtonUp">


<cmd:EventToCommand Command="{Binding DataContext.MouseClickCommand,  RelativeSource={RelativeSource AncestorType=ListBox}}" CommandParameter ="{Binding}" />
</i:EventTrigger>
</i:Interaction.Triggers>

そしてあなたのViewModelは次のように見えます

private RelayCommand<StateForm> _MouseClickCommand;
    public RelayCommand<StateForm> MouseClickCommand
    {
        get {
            if (_MouseClickCommand == null)
            {
                _MouseClickCommand = new RelayCommand<StateForm>(e => MouseClick(e));
            }
            return _MouseClickCommand; }
        set
        {
            _MouseClickCommand = value;
            RaisePropertyChanged("MouseClickCommand");
        }
    }
  private void MouseClick(StateForm e)
    {
   Your Code goes Here
       }
于 2012-10-05T09:23:41.853 に答える
0

Binding私は同じことをしようとしましたが、別のバインディングにa を作成する方法が見つかりませんでした。これを解決する方法:

SelectedItemと同じ場所にプロパティを作成しICommand、コレクションの選択したアイテムを自分のSelectedItemプロパティにバインドしますmode=TwoWay。このようにして、私は常にSelectedItemコレクションの選択されたアイテムを自分のプロパティに持っており、ICommandアクセスできます。

これが問題の解決に役立つことを願っています...

于 2012-10-04T19:16:42.623 に答える