wpfbuttonwpf-controlscommandbinding

How to bind Close command to a button


The easiest way is to implement ButtonClick event handler and invoke Window.Close() method, but how doing this through a Command binding?


Solution

  • I think that in real world scenarios a simple click handler is probably better than over-complicated command-based systems but you can do something like that:

    using RelayCommand from this article http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

    public class MyCommands
    {
        public static readonly ICommand CloseCommand =
            new RelayCommand( o => ((Window)o).Close() );
    }
    
    <Button Content="Close Window"
            Command="{X:Static local:MyCommands.CloseCommand}"
            CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor, 
                               AncestorType={x:Type Window}}}"/>