WPF ICommand.在UI、XP上执行

本文关键字:XP 执行 UI ICommand WPF | 更新日期: 2023-09-27 17:51:02

我在WPF应用程序的Window中有一个UserControl

    <StackPanel Orientation="Horizontal" Margin="5">
        <Button Command="{Binding AddFileCommand}" />
    </StackPanel>

在模型中,我声明并初始化了一个AddFileCommand变量:

public ICommand AddFileCommand { get; set; }
public XXXModel()
{
    AddFileCommand = new DelegateCommand(o => true, AddFile);
}

最好的解决方案是使用ICommand s而不是Click事件。

在Windows XP下,单击此按钮不会触发AddFile(对象参数)函数。在Windows Vista/Windows 7上,它就像一种魔力。直接从代码中调用ICommand.Execute()在XP下也可以工作。

我尝试了更新。net框架(该项目使用。net 4.0),但代码中仍然存在不足。

如何解决这个问题?

WPF ICommand.在UI、XP上执行

正如@ta.speot所提到的。DelegateCommand构造函数将第一个参数作为要调用的Action,第二个参数是Func<T,>引用CanExecute()。

您的Execute方法将执行Func<T,>,而不是Action。它不能在一个操作系统上运行,也不能在另一个操作系统上运行。