WPF窗体样式继承

来源:互联网 发布:sql server语句 编辑:程序博客网 时间:2024/05/30 23:02

    在机房合作中,组合查询窗体用到了继承,那么如何继承呢?

    我们写好的父窗口类为frmGroup,对应frmGroup.cs和frmGroup.xaml,要继承它的子窗体是学生上机统计信息frmStuOnlineInfo

这里我修改成:

<span style="font-family:KaiTi_GB2312;font-size:24px;">public partial class frmStuOnlineInfo : frmGroup</span>

    但是经过编译会报错:frmStuOnlineInfo有着不同的基类

    这是因为frmStuOnlineInfo同时继承了window和frmGroup,多继承是不允许的。

解决方法:

    需要修改frmStuOnlineInfo.xaml,将其中的根“Window”,修改成我们的frmGroup:

<span style="font-family:KaiTi_GB2312;font-size:24px;"><Controls:MetroWindow x:Class="JfCooperate.一般用户.frmStuOnlineInfo"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"        Title="frmStuOnlineInfo" Height="473.617" Width="831.064">    <Grid>            </Grid></Controls:MetroWindow></span>


    此时一个新的错误:src:frmGroup不能是Xaml文件的根,因为它是由Xaml定义的

解决方法:

    把父窗体的xaml放到App.xaml中


下面是我设计的组合查询窗体的样式:

<span style="font-family:KaiTi_GB2312;font-size:24px;"><ControlTemplate x:Key="WindowControlTemplate1" TargetType="{x:Type Window}">                <Grid>                    <Frame Content="字段名" HorizontalAlignment="Left" Height="129" Margin="10,44,0,0" VerticalAlignment="Top" Width="152"/>                    <ComboBox HorizontalAlignment="Left" Margin="27,62,0,0" VerticalAlignment="Top" Width="120"/>                    <ComboBox HorizontalAlignment="Left" Margin="27,102,0,0" VerticalAlignment="Top" Width="120"/>                    <ComboBox HorizontalAlignment="Left" Margin="27,147,0,0" VerticalAlignment="Top" Width="120"/>                    <Frame Content="操作符" HorizontalAlignment="Left" Height="129" Margin="197,44,0,0" VerticalAlignment="Top" Width="152"/>                    <ComboBox HorizontalAlignment="Left" Margin="214,62,0,0" VerticalAlignment="Top" Width="120"/>                    <ComboBox HorizontalAlignment="Left" Margin="214,102,0,0" VerticalAlignment="Top" Width="120"/>                    <ComboBox HorizontalAlignment="Left" Margin="214,147,0,0" VerticalAlignment="Top" Width="120"/>                    <Frame Content="输入查询内容" HorizontalAlignment="Left" Height="129" Margin="527,45,0,0" VerticalAlignment="Top" Width="152"/>                    <ComboBox HorizontalAlignment="Left" Margin="544,78,0,0" VerticalAlignment="Top" Width="120"/>                    <ComboBox HorizontalAlignment="Left" Margin="544,133,0,0" VerticalAlignment="Top" Width="120"/>                    <Frame Content="组合关系" HorizontalAlignment="Left" Height="142" Margin="385,45,0,0" VerticalAlignment="Top" Width="137"/>                    <TextBox HorizontalAlignment="Left" Height="23" Margin="385,78,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>                    <TextBox HorizontalAlignment="Left" Height="23" Margin="385,133,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>                    <DataGrid HorizontalAlignment="Left" Margin="70,215,0,0" VerticalAlignment="Top" Height="208" Width="571"/>                    <Button Content="查询" HorizontalAlignment="Left" Margin="702,103,0,0" VerticalAlignment="Top" Width="75"/>                    <Button Content="清空" HorizontalAlignment="Left" Margin="702,173,0,0" VerticalAlignment="Top" Width="75"/>                    <Button Content="导出" HorizontalAlignment="Left" Margin="702,300,0,0" VerticalAlignment="Top" Width="75"/>                    <Button Content="退出" HorizontalAlignment="Left" Margin="702,236,0,0" VerticalAlignment="Top" Width="75"/>                </Grid>                <ControlTemplate.Triggers>                    <MultiTrigger>                        <MultiTrigger.Conditions>                            <Condition Property="ResizeMode"                               Value="CanResizeWithGrip" />                            <Condition Property="WindowState"                               Value="Normal" />                        </MultiTrigger.Conditions>                    </MultiTrigger>                </ControlTemplate.Triggers>            </ControlTemplate></span>


子窗体继承代码为:

<span style="font-family:KaiTi_GB2312;font-size:24px;"><Controls:MetroWindow x:Class="JfCooperate.一般用户.frmStuOnlineInfo"        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"        xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"        Title="frmStuOnlineInfo" Height="473.617" Width="831.064"        Template="{StaticResource WindowControlTemplate1}">    <Grid>            </Grid></Controls:MetroWindow></span>

显示结果


0 0