WPF自定义最大化最小化关闭按钮

WPF自定义最大化最小化关闭按钮

当觉得界面自带的最大化最小化关闭按钮不好看,或者想换个位置的时候,你需要自定义最大化最小化关闭按钮

最大化按钮

最大化按钮有两种状态:最大化,跟还原状态两种显示方式。做法:定义command为SystemCommands.XXXCommand。本次使用了DataTemplateSelector,根据当前window的WindowState状态来判断当前窗体状态(如果没定义window需要在本窗体最开始,定义Name=“window”)
前端xaml代码


    
        
    

最大化模板


    

还原模板


    

后台TemplateSelector代码

/// 
/// 最大化与还原按钮状态模板选择器
/// 
public class MaxTemplateSelector : DataTemplateSelector
{
    public DataTemplate MaxTemplate { get; set; }
    public DataTemplate RestoreTemplate { get; set; }
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        //Window win = Application.Current.MainWindow;
        //WindowState state = win.WindowState;
 //必须判断是否为空,否则设计器无法操作
        if (item == null)
            return null;
        WindowState state = (WindowState)item;
        switch (state)
        {
            case WindowState.Normal:
                return MaxTemplate;
            case WindowState.Maximized:
                return RestoreTemplate;
        }
        return null;
    }
}

window最前面定义CommandBinding。

    
        
        
    

定义Executed事件方法

        private void RestoreWindow_Exec(object sender, ExecutedRoutedEventArgs e)
        {
            SystemCommands.RestoreWindow(this);
        }

        private void MaximizeWindow_Exec(object sender, ExecutedRoutedEventArgs e)
        {
            SystemCommands.MaximizeWindow(this);
        }

最小化按钮


window最前面定义CommandBinding。


    

定义Executed事件方法

private void MinimizeWindow_Exec(object sender, ExecutedRoutedEventArgs e)
{
    SystemCommands.MinimizeWindow(this);
}

关闭按钮

 

2022.2.25应评论区要求更新

中间引用的style: MetroWindowButtonStyle1
我这个程序UI框架是依赖于mahapp.metro,所以会引用到mahapp.metro的MetroWindowButtonStyle,然后我自己只是根据业务需求自定义了一下,本质可以直接用MetroWindowButtonStyle


看了下,MetroWindowButtonStyle是这么定义了


你可能感兴趣的:(WPF,C#,WPF,button,close,min,max)