您的位置:首页 > Web前端 > CSS

WPF窗体样式继承

2016-07-12 16:10 447 查看
    在机房合作中,组合查询窗体用到了继承,那么如何继承呢?

    我们写好的父窗口类为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>

显示结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: