我的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),但代码仍然缺乏。
如何解决此问题?
答案 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; 。它无法在一个操作系统上运行,也无法在另一个操作系统上运行。