2011-07-30 25 views
1

這是C#WPF應用程序。我有一個Button關閉應用程序。是否有與窗口右上角的(x)按鈕相關的默認關閉事件。什麼是XAML中的默認關閉事件?

基本上,我希望有一個像下面這樣的純XAML的解決方案:

<Button CloseWhenClick></Button> 

的這個代替:

<Button Click="CloseWindow_Click"></Button> 

private void Close(object sender, RoutedEventArgs e) 
{ 
    Window.Close(); 
} 

[編輯 - 答案】

我一直在尋找用於:

<Button Command="Close"></Button> 
+0

任何具體原因'純XAML'解決方案? –

回答

1

有沒有像「默認」關閉事件沒有這樣的consept,但THRE是在WPF命令的概念。將您的中繼命令綁定到該按鈕,然後完成。以下是Q & A:WPF Standard Commands - Where's Exit?上的鏈接。

希望這會有所幫助。

問候。

0

試試這個

public App() 
    { 
     Exit += new ExitEventHandler(App_Exit); 
    } 

    void App_Exit(object sender, ExitEventArgs e) 
    { 
     // TODO : are you sure ?!! 
    } 

希望這有助於

+0

@ S.Aamani:正如所提到的問題,我正在尋找一種XAML解決方案的可能性 – KMC

+0

不,這是不可能的。 – saber

0

實際上並不那麼複雜(但仍然是因爲不提供它而導致M $糟糕)。這裏你去:

public static class MyCommands 
{ 
    private static readonly ICommand appCloseCmd = new ApplicationCloseCommand(); 
    public static ICommand ApplicationCloseCommand 
    { 
     get { return appCloseCmd; } 
    } 
} 

//=================================================================================================== 
public class ApplicationCloseCommand : ICommand 
{ 
    public event EventHandler CanExecuteChanged 
    { 
     // You may not need a body here at all... 
     add { CommandManager.RequerySuggested += value; } 
     remove { CommandManager.RequerySuggested -= value; } 
    } 

    public bool CanExecute(object parameter) 
    { 
     return Application.Current != null && Application.Current.MainWindow != null; 
    } 

    public void Execute(object parameter) 
    { 
     Application.Current.MainWindow.Close(); 
    } 
} 

而事件處理程序的主體可能不是甚至需要。

您可以使用它,像這樣:

<MenuItem Header="{DynamicResource MenuFileExit}" Command="MyNamespace:MyCommands.ApplicationCloseCommand"/> 

乾杯!

(你無法想象花了多長時間我發現這個命令的東西我自己......)