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>
显示结果
我们写好的父窗口类为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>
显示结果
相关文章推荐
- Atom Editor 插件 atom-less 的使用方法
- 如何让div自动适应内容宽度,并且居中
- CSS整体界面设计
- CSS tab选项卡(标签页)切换
- CSS list-style属性控制ul标签样式
- 使用CSS3 backface-visibility:hidden;属性制作翻转动画效果
- css-表格的美化总结
- [原创]CSS3打造动态3D气球
- CSS实现会发光的输入框input
- css的transition 属性
- 淘宝顶端的通知样式 .
- css--伪类:first-child
- CSS中!important的使用
- 关于css 的 !important
- nav布局 在线演示 DIVCSS5
- Animate.css 教程
- 边框动画 Creating a Border Animation Effect with SVG and CSS 动画边框,很不错!
- css-outline:0 none
- 有用的HTML+CSS片段
- **CSS**对CSS的认识