CommandParameter如何在MVVM中工作?

拉斐尔·提桑迪耶(Raphael Teyssandier)

我想在我的类CommandProvider中实现CommandParameter,该类用于命令(Button等)并从ICommand继承,但是我不知道如何实现。例子:

XAML

<TreeViewItem Header="Playlist" ItemsSource="{Binding ItemSourceTree}">
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="MouseDoubleClick">
      <i:InvokeCommandAction Command="{Binding Path=NewPlaylist}"
                             CommandParameter="{Binding Path=NamePlaylist}" />
    </i:EventTrigger>
  </i:Interaction.Triggers>
<TreeViewItem.ItemTemplate>
   <DataTemplate DataType="{x:Type local:PlaylistDB}">
      <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Path=NamePlaylist}">
        </TextBlock>
      </StackPanel>
    </DataTemplate>
  </TreeViewItem.ItemTemplate>
</TreeViewItem>

控制台说,找不到NamePlaylist。

并将函数链接到Binding NewPlaylist

public ICommand NewPlaylist { get { return new CommandProvider((obj) => DoubleClickTest(obj)); } }

功能

public void DoubleClickTest(object obj)
        {
            var tmp = obj as string;
            Console.WriteLine(tmp);
        }

所以我需要修改我的类CommandProvider来接受参数吗?我该怎么做?

命令提供者

public class CommandProvider : ICommand
{
#region Constructors       

public CommandProvider(Action<object> execute) : this(execute, null) { }

public CommandProvider(Action<object> execute, Predicate<object> canExecute)
{
    _execute = execute;
    _canExecute = canExecute;
}

#endregion

#region ICommand Members

public event EventHandler CanExecuteChanged;

public bool CanExecute(object parameter)
{
    return _canExecute != null ? _canExecute(parameter) : true;
}

public void Execute(object parameter)
{
    if (_execute != null)
        _execute(parameter);
}

public void OnCanExecuteChanged()
{
    CanExecuteChanged(this, EventArgs.Empty);
}

#endregion

private readonly Action<object> _execute = null;
private readonly Predicate<object> _canExecute = null;
}

播放清单数据库

public class PlaylistDB
    {
        public string NamePlaylist { get; set; }
    }

我想NamePlaylist在函数中检索DoubleClickTest(),然后将其传递给我CommandParameter我怎样才能做到这一点?

使用下面的类接受commandparameters使用ICommand

public class DelegateCommand: ICommand
{
    #region Constructors       

    public DelegateCommand(Action<object> execute)
    : this(execute, null) { }

    public DelegateCommand(Action<object> execute, Predicate<object> canExecute)
    {
        _execute = execute;
        _canExecute = canExecute;
    }

    #endregion

    #region ICommand Members

    public event EventHandler CanExecuteChanged;

    public bool CanExecute(object parameter)
    {
        return _canExecute != null ? _canExecute(parameter) : true;
    }

    public void Execute(object parameter)
    {
        if (_execute != null)
            _execute(parameter);
    }

    public void OnCanExecuteChanged()
    {
        CanExecuteChanged(this, EventArgs.Empty);
    }

    #endregion

    private readonly Action<object> _execute = null;
    private readonly Predicate<object> _canExecute = null;
}

用法:

public ICommand CloseCommand
    {
        get
        {
            return new DelegateCommand((obj)=>CloseMethod(obj));
        }
    }

objcommand parameter上面示例中传递的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在TextChagned事件中通过CommandParameter传递更新的文本?

来自分类Dev

C# 和 WPF,当使用 mvvm 样式和按钮动作作为带有 commandparameter 的命令时,如何始终在 commandparameter 中创建一个新对象?

来自分类Dev

MVVM做法不好?(CommandParameter)

来自分类Dev

如何在 DataTemplate 中为 Command 和 CommandParameter 设置绑定顺序

来自分类Dev

如何在MVVM中制作MouseOver事件?

来自分类Dev

如何在Mvvm Light中清理ViewModel?

来自分类Dev

如何在MVVM中强制更新UI?

来自分类Dev

如何在mvvm中重置视图模型

来自分类Dev

如何在MVVM中编写ViewModelBase

来自分类Dev

如何在MVVM中制作MouseOver事件?

来自分类Dev

<>如何在SQL中工作?

来自分类Dev

如何在铁轨中工作?

来自分类Dev

在 MVVM 中工作时如何组织和命名代码

来自分类Dev

如何在MVVM Light中的ViewModelLocator中引用viewModel对象

来自分类Dev

如何在MVVM中的WPF数据网格中显示数据

来自分类Dev

ios :: fmtflags如何在C ++中工作?setf()如何工作?

来自分类Dev

如何在Reactjs中实现类似MVVM的框架

来自分类Dev

C#-如何在MVVM中处理XAML键盘?

来自分类Dev

BindingExpression路径错误-如何在MVVM模型中构造代码?

来自分类Dev

如何在MVVM中对异步ICommand进行单元测试?

来自分类Dev

如何在MVVM模型中实现数据验证?

来自分类Dev

如何在MVVM模式wpf中绑定StrokeDashArray属性

来自分类Dev

如何在Kotlin MVVM数据绑定中解析Json

来自分类Dev

如何在列表框中绑定颜色集合(MVVM)

来自分类Dev

如何在MVVM模式中更新模型和查看模型?

来自分类Dev

如何在mvvm中显示来自ObservableCollection的图像

来自分类Dev

如何在Reactjs中实现类似MVVM的框架

来自分类Dev

如何在MVVM中获取最后生成的代码

来自分类Dev

如何在 MVVM Caliburn.Micro 中绑定用户控件?

Related 相关文章

  1. 1

    如何在TextChagned事件中通过CommandParameter传递更新的文本?

  2. 2

    C# 和 WPF,当使用 mvvm 样式和按钮动作作为带有 commandparameter 的命令时,如何始终在 commandparameter 中创建一个新对象?

  3. 3

    MVVM做法不好?(CommandParameter)

  4. 4

    如何在 DataTemplate 中为 Command 和 CommandParameter 设置绑定顺序

  5. 5

    如何在MVVM中制作MouseOver事件?

  6. 6

    如何在Mvvm Light中清理ViewModel?

  7. 7

    如何在MVVM中强制更新UI?

  8. 8

    如何在mvvm中重置视图模型

  9. 9

    如何在MVVM中编写ViewModelBase

  10. 10

    如何在MVVM中制作MouseOver事件?

  11. 11

    <>如何在SQL中工作?

  12. 12

    如何在铁轨中工作?

  13. 13

    在 MVVM 中工作时如何组织和命名代码

  14. 14

    如何在MVVM Light中的ViewModelLocator中引用viewModel对象

  15. 15

    如何在MVVM中的WPF数据网格中显示数据

  16. 16

    ios :: fmtflags如何在C ++中工作?setf()如何工作?

  17. 17

    如何在Reactjs中实现类似MVVM的框架

  18. 18

    C#-如何在MVVM中处理XAML键盘?

  19. 19

    BindingExpression路径错误-如何在MVVM模型中构造代码?

  20. 20

    如何在MVVM中对异步ICommand进行单元测试?

  21. 21

    如何在MVVM模型中实现数据验证?

  22. 22

    如何在MVVM模式wpf中绑定StrokeDashArray属性

  23. 23

    如何在Kotlin MVVM数据绑定中解析Json

  24. 24

    如何在列表框中绑定颜色集合(MVVM)

  25. 25

    如何在MVVM模式中更新模型和查看模型?

  26. 26

    如何在mvvm中显示来自ObservableCollection的图像

  27. 27

    如何在Reactjs中实现类似MVVM的框架

  28. 28

    如何在MVVM中获取最后生成的代码

  29. 29

    如何在 MVVM Caliburn.Micro 中绑定用户控件?

热门标签

归档