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>
    
  • 相关阅读:
    面试只要问到分布式,必问分布式锁
    Java编程中忽略这些细节,Bug肯定找上你
    不止承上启下,带你了解工业物联网关
    论文解读二十七:文本行识别模型的再思考
    并发高?可能是编译优化引发有序性问题
    论文解读丨LayoutLM: 面向文档理解的文本与版面预训练
    SQL优化老出错,那是你没弄明白MySQL解释计划
    SQL反模式学习笔记1 开篇
    SQL Server中自定义函数:用指定的分隔符号分割字符串
    .NET软件开发与常用工具清单
  • 原文地址:https://www.cnblogs.com/chenxizhang/p/1643676.html
Copyright © 2011-2022 走看看