3

我的WPF 应用程序中有一个UserControlinside 。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);
}

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

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

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

我该如何解决这个问题?

4

1 回答 1

-1

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

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

于 2013-03-29T07:12:17.220 回答