2013-01-08 28 views
3

我在我的WPF應用程序的Window中有一個UserControl在UI,XP上的WPF ICommand.Execute

<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

哪個DelegateCommand? http://msdn.microsoft.com/en-us/library/ff654427.aspx? –

+0

是的,我正在使用的那個。 – ermahgerd

+2

那麼構造函數需要一個'Action'作爲第一個參數執行,而不是第二個參數。 –

回答

-1

正如@ ta.speot.is提到的,DelegateCommand構造函數將第一個參數爲行動<Ť>被調用,並且第二個是Func鍵< T,布爾>稱爲CanExecute()。

Execute方法將執行Func鍵< T,布爾>,而不是行動<牛逼>。它不能在一個操作系統上工作,而不能在另一個操作系統上工作。