zoukankan      html  css  js  c++  java
  • 如何在WPF中定义窗体模板

    可以在app.xaml中定义一个ControlTemplate,指定TargetType为Window
    <Application x:Class="WpfApplication1.App"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        StartupUri="Window1.xaml">
        <Application.Resources>
            <ControlTemplate x:Key="WindowControlTemplate1" TargetType="{x:Type Window}">
                <Border 
            Background="{TemplateBinding Background}" 
            BorderBrush="{TemplateBinding BorderBrush}" 
            BorderThickness="{TemplateBinding BorderThickness}"
            >
                    <Grid>
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="0.93*"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
    
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="0.21*"/>
                            <ColumnDefinition Width="0.79*"/>
                        </Grid.ColumnDefinitions>
    
                        <ContentPresenter 
                    Grid.ColumnSpan="2" 
                    Grid.Row="1" 
                    Content="{TemplateBinding Content}" 
                    ContentTemplate="{TemplateBinding ContentTemplate}"
                    />
                        <ResizeGrip 
                    HorizontalAlignment="Right" 
                    x:Name="WindowResizeGrip" 
                    VerticalAlignment="Bottom" 
                    IsTabStop="False" 
                    Visibility="Collapsed" 
                    Grid.Column="1" 
                    Grid.Row="2"
                    />
                        <TextBlock Text="My Logo" />
                        <TextBlock Grid.Column="1" Text="My Title"/>
                        <StatusBar Height="20" Grid.ColumnSpan="2" Grid.Row="2"/>
                    </Grid>
                </Border>
    
                <ControlTemplate.Triggers>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="ResizeMode" Value="CanResizeWithGrip"/>
                            <Condition Property="WindowState" Value="Normal"/>
                        </MultiTrigger.Conditions>
                        <Setter Property="Visibility" TargetName="WindowResizeGrip" Value="Visible"/>
                    </MultiTrigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Application.Resources>
    </Application>
    
    然后在窗体中可以像下面这样使用
    <Window x:Class="WpfApplication1.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300" Template="{DynamicResource WindowControlTemplate1}">
        
        <Button Grid.Row="1" Grid.Column="1" Content="Hello,World"></Button>
        
    </Window>
    
  • 相关阅读:
    python鸭子类型
    chrome Network 过滤和高级过滤
    代理服务器支持https(转)
    解决fiddler不能抓取firefox浏览器包的问题(转)
    Fiddler抓包8-打断点(bpu)(转)
    Git diff (---和+++具体解释)(转)
    Xposed模块编写
    Android 渗透测试学习手册(八)ARM 利用
    Android 渗透测试学习手册(七)不太知名的 Android 漏洞
    Android 渗透测试学习手册(六)玩转 SQLite
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1643676.html
Copyright © 2011-2022 走看看