WPF ICommand.Execute在UI,XP上

时间:2013-01-08 09:13:52

标签: c# wpf icommand

我的WPF应用程序UserControl内有Window

    <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代替Click事件,将会感谢您提供最佳解决方案。

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

我尝试更新.NET框架(该项目使用的是.NET 4.0),但代码仍然缺乏。

如何解决此问题?

1 个答案:

答案 0 :(得分:-1)

如@ ta.speot.is所述,DelegateCommand构造函数将第一个参数作为 Action&lt; T&gt; 进行调用,第二个参数为 Func&lt; T ,bool&gt; 引用CanExecute()。

您的Execute方法将执行 Func&lt; T,bool&gt; ,而不是操作&lt; T&gt; 。它无法在一个操作系统上运行,也无法在另一个操作系统上运行。