3、再遇HandyControl之窗体

前言:记录下HandyControl中自定义窗体NonClientAreaContent

一、注意

NonClientAreaContent控件在Window命名空间下,可以自定义窗体的标题栏大小、内容,但是有几点需要注意

  • 最大、最小、退出这三个按钮及所在的位置不能编辑,只会随着自定义标题栏扩大缩小。
  • 这块区域,就是蓝色这块,不能被选中拖动,需要在自定义标题那块区域进行拖动。
  • NonClientAreaContent 没有Background这个属性,所以笔者这里在下一级控件--StackPanel设置了Background

<hc:Window x:Class="MDLTestMachine.Views.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:prism="http://prismlibrary.com/"
        prism:ViewModelLocator.AutoWireViewModel="True"
        xmlns:core="clr-namespace:MDLTestMachine.Core;assembly=MDLTestMachine.Core"
        xmlns:hc="https://handyorg.github.io/handycontrol"
        
        Title="{Binding Title}" Height="350" Width="525">

    <hc:Window.NonClientAreaContent>
        <StackPanel Orientation="Horizontal" Height="35" Height="35" Background="Blue">
            <Button Content="11" Background="Red"/>
            <Button Content="22" Background="Yellow"/>
            <Button Content="33" Background="Green"/>
        </StackPanel>
    </hc:Window.NonClientAreaContent>
    <Grid>
        <ContentControl prism:RegionManager.RegionName="{x:Static core:RegionNames.ContentRegion}" />
    </Grid>
</hc:Window>

二、官网

官网中是这样的,比较好看 ,我们来看下官网中怎么写的

<Grid x:Class="HandyControlDemo.UserControl.NonClientAreaContent"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:langs="clr-namespace:HandyControlDemo.Properties.Langs"
      xmlns:ex="clr-namespace:HandyControlDemo.Tools.Extension"
      Height="29"
      DataContext="{Binding NoUser,Source={StaticResource Locator}}"
      xmlns:hc="https://handyorg.github.io/handycontrol"
      xmlns:data="clr-namespace:HandyControlDemo.Data" Background="Red">
     
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <StackPanel VerticalAlignment="Stretch" Orientation="Horizontal">
        <Menu Margin="10,0,0,0" Background="Transparent">
            <MenuItem Height="29" Header="{ex:Lang Key={x:Static langs:LangKeys.Repository}}">
                <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://github.com/NaBian/HandyControl" Header="GitHub">
                    <MenuItem.Icon>
                        <Path Data="{StaticResource GithubGeometry}" Fill="{DynamicResource PrimaryTextBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://www.nuget.org/packages/HandyControl" Header="NuGet">
                    <MenuItem.Icon>
                        <Path Data="{StaticResource NugetGeometry}" Fill="#30a5dd" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://marketplace.visualstudio.com/items?itemName=HandyOrg.HandyControl" Header="{ex:Lang Key={x:Static langs:LangKeys.Vsix}}">
                    <MenuItem.Icon>
                        <Path Data="{StaticResource VisualStudioGeometry}" Fill="{DynamicResource PrimaryTextBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
            </MenuItem>
            <MenuItem Height="29" Header="{ex:Lang Key={x:Static langs:LangKeys.About}}">
                <MenuItem Command="{Binding OpenViewCmd}" CommandParameter="{x:Static data:MessageToken.ContributorsView}" Header="{ex:Lang Key={x:Static langs:LangKeys.Contributors}}">
                    <MenuItem.Icon>
                        <Path Data="{StaticResource ContributorsGeometry}" Fill="#ef6c00" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="mailto:836904362@qq.com" Header="{ex:Lang Key={x:Static langs:LangKeys.Email}}">
                    <MenuItem.Icon>
                        <Path Data="{StaticResource EmailGeometry}" Fill="{DynamicResource WarningBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://join.slack.com/t/handycontrol/shared_invite/zt-sw29prqd-okFmRlmETdtWhnF7C3foxA" Header="{ex:Lang Key={x:Static langs:LangKeys.Chatroom}}">
                    <MenuItem.Icon>
                        <Image Width="16" Height="16" Source="/HandyControlDemo;component/Resources/Img/Slack.png" Stretch="None" StretchDirection="Both"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://www.cnblogs.com/nabian" Header="{ex:Lang Key={x:Static langs:LangKeys.Blog}}">
                    <MenuItem.Icon>
                        <Path Data="{StaticResource CnblogsGeometry}" Fill="{DynamicResource PrimaryTextBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="{ex:Lang Key={x:Static langs:LangKeys.Demo}}">
                    <MenuItem.Icon>
                        <Path Data="{StaticResource CodeGeometry}" Fill="{DynamicResource PrimaryTextBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                    <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://github.com/AFei19911012/HandyControl" Header="AFei19911012 / HandyControl">
                        <MenuItem.Icon>
                            <Path Data="{StaticResource CodeGeometry}" Fill="{DynamicResource PrimaryTextBrush}" Stretch="Uniform"/>
                        </MenuItem.Icon>
                    </MenuItem>
                </MenuItem>
                <MenuItem Header="{ex:Lang Key={x:Static langs:LangKeys.Documentation}}">
                    <MenuItem.Icon>
                        <Path Data="{StaticResource DocGeometry}" Fill="{DynamicResource PrimaryBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                    <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://github.com/ghost1372/HandyControl/wiki/Documentation" Header="Wiki">
                        <MenuItem.Icon>
                            <Path Data="{StaticResource WikiGeometry}" Fill="{DynamicResource PrimaryTextBrush}" Stretch="Uniform"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://ghost1372.github.io" Header="{ex:Lang Key={x:Static langs:LangKeys.Doc_en}}">
                        <MenuItem.Icon>
                            <Path Data="{StaticResource LogoGeometry}" Fill="#ef6c00" Stretch="Uniform"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Command="hc:ControlCommands.OpenLink" CommandParameter="https://handyorg.github.io" Header="{ex:Lang Key={x:Static langs:LangKeys.Doc_cn}}">
                        <MenuItem.Icon>
                            <Path Data="{StaticResource LogoGeometry}" Fill="#ef6c00" Stretch="Uniform"/>
                        </MenuItem.Icon>
                    </MenuItem>
                </MenuItem>
                <MenuItem Header="{ex:Lang Key={x:Static langs:LangKeys.About}}" Click="MenuAbout_OnClick">
                    <MenuItem.Icon>
                        <Path Data="{StaticResource InfoGeometry}" Fill="{DynamicResource SuccessBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
            </MenuItem>
            <MenuItem Height="29" Header="{ex:Lang Key={x:Static langs:LangKeys.Recommendation}}">
                <MenuItem Header="{ex:Lang Key={x:Static langs:LangKeys.Project}}" Command="{Binding OpenViewCmd}" CommandParameter="{x:Static data:MessageToken.ProjectsView}" >
                    <MenuItem.Icon>
                        <Path Data="{StaticResource ProjectGeometry}" Fill="{DynamicResource PrimaryTextBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="{ex:Lang Key={x:Static langs:LangKeys.Blog}}" Command="{Binding OpenViewCmd}" CommandParameter="{x:Static data:MessageToken.BlogsView}" >
                    <MenuItem.Icon>
                        <Path Data="{StaticResource BlogGeometry}" Fill="{DynamicResource PrimaryBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
                <MenuItem Header="{ex:Lang Key={x:Static langs:LangKeys.Website}}" Command="{Binding OpenViewCmd}" CommandParameter="{x:Static data:MessageToken.WebsitesView}" >
                    <MenuItem.Icon>
                        <Path Data="{StaticResource WebsiteGeometry}" Fill="{DynamicResource WarningBrush}" Stretch="Uniform"/>
                    </MenuItem.Icon>
                </MenuItem>
            </MenuItem>
        </Menu>
        <Border Margin="10,0,0,0" VerticalAlignment="Center" CornerRadius="2" Padding="10,4" Background="{DynamicResource SecondaryRegionBrush}">
            <TextBlock FontWeight="Bold" Text="{Binding VersionInfo}" VerticalAlignment="Center" Foreground="{DynamicResource PrimaryTextBrush}"/>
        </Border>
    </StackPanel>
    <Button Grid.Column="1" Click="ButtonConfig_OnClick" Name="ButtonConfig" Style="{StaticResource ButtonIcon}" hc:IconElement.Geometry="{StaticResource ConfigGeometry}"/>
    <Popup AllowsTransparency="True" Grid.Column="1" PlacementTarget="{Binding ElementName=ButtonConfig}" HorizontalOffset="-28" Name="PopupConfig" VerticalOffset="6" StaysOpen="False">
        <Border Background="{DynamicResource SecondaryRegionBrush}" CornerRadius="4" Margin="16" Effect="{StaticResource EffectShadow2}">
            <StackPanel Orientation="Horizontal">
                <hc:UniformSpacingPanel Button.Click="ButtonLangs_OnClick" Orientation="Vertical" Margin="10" Spacing="10" ChildWrapping="Wrap" MaxHeight="134">
                    <Button Tag="zh-cn" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/cn.png"/>
                    </Button>
                    <Button Tag="en" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/en.png"/>
                    </Button>
                    <Button Tag="fa" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/fa.png"/>
                    </Button>
                    <Button Tag="fr" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/fr.png"/>
                    </Button>
                    <Button Tag="ca-ES" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/ca-Es.png"/>
                    </Button>
                    <Button Tag="ja" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/ja.png"/>
                    </Button>
                    <Button Tag="ko-KR" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/ko-KR.png"/>
                    </Button>
                    <Button Tag="ru" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/ru.png"/>
                    </Button>
                    <Button Tag="tr" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/tr.png"/>
                    </Button>
                    <Button Tag="pt-BR" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/pt-BR.png"/>
                    </Button>
                    <Button Tag="pl" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/pl.png" />
                    </Button>
                    <Button Tag="es" Style="{StaticResource ButtonCustom}">
                        <Image Width="32" Source="/HandyControlDemo;component/Resources/Img/Flag/es.png"/>
                    </Button>
                </hc:UniformSpacingPanel>
                <hc:Divider LineStrokeDashArray="2,2" Orientation="Vertical" Margin="0,20" LineStrokeThickness="2"/>
                <StackPanel Button.Click="ButtonSkins_OnClick"  Margin="10,10,10,10">
                    <Button Tag="{x:Static hc:SkinType.Default}" Style="{StaticResource ButtonCustom}">
                        <Border Background="White" Width="32" Height="21" CornerRadius="2" BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}"/>
                    </Button>
                    <Button Tag="{x:Static hc:SkinType.Dark}" Style="{StaticResource ButtonCustom}" Margin="0,10,0,0">
                        <Border Background="Black" Width="32" Height="21" CornerRadius="2" BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}"/>
                    </Button>
                    <Button Tag="{x:Static hc:SkinType.Violet}" Style="{StaticResource ButtonCustom}" Margin="0,10,0,0">
                        <Border Background="DarkViolet" Width="32" Height="21" CornerRadius="2" BorderThickness="1" BorderBrush="{DynamicResource BorderBrush}"/>
                    </Button>
                </StackPanel>
            </StackPanel>
        </Border>
    </Popup>
</Grid>

官网写了个UserControl,然后在后台加载了下,从上面可以看出,主要是用来menu来做的。然后里面用了一些资源。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值