2

例如我有一个班级人:

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

在我的 wpf 应用程序的 mainWindow 中,我得到了一个带有此类的 ObservableCollection,我想在表格中显示它。我让它在表格中显示成员(在这种情况下只有名称),但由于某些原因,我在表格中有一个按钮。在此按钮中,我使用 xaml 文件中的“命令”属性将 ICommand 绑定到它。

这就是我到目前为止所做的工作,但我怎样才能将对象“人”本身作为参数发送给命令?我成功地将 xaml 中的命令参数用于字符串/整数,但是如何发送我在行中显示的对象?

谢谢!

4

3 回答 3

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

听起来您没有在 CommandParameter 值中正确绑定对象。我需要成为代码隐藏或 ViewModel 中的公共属性(如果您使用的是 MVVM),如果此值发生更改,则需要使用 PropertyChanged 事件。

希望这是有道理的。

于 2012-10-04T19:35:22.723 回答
0

我试图做同样的事情,但我没有找到任何方法来创建Binding另一个绑定。我如何解决这个问题:

SelectedItem在同一个地方创建一个属性ICommand,然后我将集合中的选定项目绑定到我的SelectedItem属性,mode=TwoWay. 这样,我总是在我的SelectedItem属性中拥有集合的选定项目,并且ICommand我可以访问它。

希望这可以帮助您解决问题...

于 2012-10-04T19:16:42.623 回答
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 回答