WPF使用ControlTemplate后,设计视图和实际运行结果不一致

问题描述

如图,左边是设计视图,右边是实际运行的,不但高度不一致。而且中间黑色部分的上下端好像还多出了1px左右的透明区域,能透视窗口下方的内容。仔细检查了代码,没有写这部分透明的内容啊。application中的代码<Applicationx:Class="MES_Assisstant.App"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"StartupUri="Login.xaml"><Application.Resources><StyleTargetType="Button"><SetterProperty="OverridesDefaultStyle"Value="True"/><SetterProperty="Foreground"Value="White"/><SetterProperty="HorizontalAlignment"Value="Right"/><SetterProperty="Template"><Setter.Value><ControlTemplateTargetType="Button"><Grid><RectangleFill="Red"/><ContentPresenterMargin="205"/></Grid></ControlTemplate></Setter.Value></Setter></Style><StyleTargetType="TextBlock"><SetterProperty="OverridesDefaultStyle"Value="True"/><SetterProperty="Margin"Value="5"/></Style><StyleTargetType="Window"x:Key="MyWindowStyle"><SetterProperty="AllowsTransparency"Value="True"/><SetterProperty="WindowStyle"Value="None"/><SetterProperty="Background"Value="Transparent"/><SetterProperty="Foreground"Value="White"/><SetterProperty="Template"><Setter.Value><ControlTemplateTargetType="Window"><BorderBorderBrush="RoyalBlue"BorderThickness="1"><Grid><Grid.RowDefinitions><RowDefinitionHeight="auto"/><RowDefinitionHeight="*"/><RowDefinitionHeight="auto"/></Grid.RowDefinitions><BorderBackground="RoyalBlue"><Grid><TextBlockText="{TemplateBindingTitle}"VerticalAlignment="Center"HorizontalAlignment="Center"/><ButtonContent="X"Name="buttonClose"Click="buttonClose_Click"HorizontalAlignment="Right"/></Grid></Border><GridGrid.Row="1"Background="LightGray"><AdornerDecoratorMargin="0"><ContentPresenterMargin="0"/></AdornerDecorator></Grid><GridGrid.Row="2"Height="auto"Background="White"><TextBlockText="{BindingElementName=buttonClose}"Foreground="Blue"/><ResizeGripName="WindowResizeGrip"Visibility="Collapsed"IsTabStop="False"HorizontalAlignment="Right"VerticalAlignment="Bottom"></ResizeGrip></Grid></Grid></Border><ControlTemplate.Triggers><TriggerProperty="ResizeMode"Value="CanResizeWithGrip"><SetterTargetName="WindowResizeGrip"Property="Visibility"Value="Visible"/></Trigger></ControlTemplate.Triggers></ControlTemplate></Setter.Value></Setter></Style></Application.Resources></Application>

窗口代码<Windowx:Class="MES_Assisstant.Login"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"xmlns:local="clr-namespace:MES_Assisstant"Title="Login"Height="240"Width="360"FontSize="14"WindowState="Normal"Style="{StaticResourceMyWindowStyle}"MouseMove="Window_MouseMove"FontFamily="MicrosoftYahei,MalgunGothic"ResizeMode="CanResizeWithGrip"><Window.Resources></Window.Resources><Grid></Grid></Window>

解决方案

解决方案二:
<RowDefinitionHeight="auto"/><RowDefinitionHeight="*"/><RowDefinitionHeight="auto"/>上下都自动,可能是设计和运行的时候根据内容自动调整引起的吧,它导致一系列的问题高度不一致是因为第一行的两个控件都设置了上下Margin="5"透明,可能只能用你的Window.Bg设置的Transparent来解释了,自动调整高度导致中间那行没有完全填充

时间: 2024-09-20 00:39:25

WPF使用ControlTemplate后,设计视图和实际运行结果不一致的相关文章

access数据库-Access中创建分割窗体,加入到水平标签或设计视图模式下后,看不到下半的数据表视图

问题描述 Access中创建分割窗体,加入到水平标签或设计视图模式下后,看不到下半的数据表视图 如题,用access2010给数据表创建了分割窗体,但切换成设计视图后,为什么只有上半部分的窗体视图而没有下半部分的数据视图? 同样的,为方便多窗口统一管理,将此分割窗体加入到 "窗体"选项卡->"导航"->"水平标签"中后,在窗口说也是只能显示上半部分. 请问,如何才能将分割窗口上下两部分同时显示在水平标签的统一管理窗口中,多谢!

usercontrol ,lable标签运行起来后与设计视图的位置不同?

问题描述 usercontrol,lable标签设计视图位置是16,24,但是运行起来后与设计视图的位置不同?看了下Textalign=TopLeftAnchor=Top,Left和其他控件对比了下属性也没有不一样的. 解决方案 解决方案二:如图,一个是设计视图,一个是运行视图,解决方案三:是不是运行后宽度不够被压缩了解决方案四:引用1楼Wistaria623的回复: 如图,一个是设计视图,一个是运行视图, 不是,界面很大,就是不知道为什么运行起来lable就变成左下角了,属性里面设置的是左上角

中文Access2000速成教程--1.3 在“设计”视图中设计表

access|教程|设计|视图|速成|中文 第三讲 在"设计"视图中设计表 为了能像在中文Visual FoxPro 6使用"表设计器"那样在中文Access 2000中设计表,需要通过"设计"视图来进行操作,其步骤如下所述. 步骤一.在"员工工时与工资"数据库窗口中单击"新建"按钮,如图12所示.然后在图13所示的"新建表"对话框的列表中选定"设计视图"项,并单击&

在设计视图中Access允许的九种数据类型

在表的设计视图中,每一个字段都有设计类型,Access允许九种数据类型:文本.备注.数值.日期/时间.货币.自动编号.是/否.OLE对象.超级链接.查询向导. 文本:这种类型允许最大255个字符或数字,Access默认的大小是50个字符,而且系统只保存输入到字段中的字符,而不保存文本字段中未用位置上的空字符.可以设置"字段大小"属性控制可输入的最大字符长度. 备注: 这种类型用来保存长度较长的文本及数字,它允许字段能够存储长达64000个字符的内容.但Access不能对备注字段进行排序

在Access2007中使用“设计视图”创建查询

在Access2007中使用查询向导虽然可以快速地创建查询,但是对于创建指定条件的查询.参数查询和其他复杂的查询.查询向导就不能完全胜任了.这种情况下,可以使用"设计视图"直接创建查询,或者使用查询向导创建查询后,再在设计视图中进行修改. 例 在"教学管理"数据库 中,查询成绩优秀的学生的"学号"."姓名"."课程"和"成绩".操作步骤如下: (1)打开"教学管理"数

VS加载设计视图失败

问题描述 加载用户控件或者设计视图有时候会报错,错误源于在构造函数中调用一些dll(由c++写的一些获取数据的方法,但是未登录前都会导致内存溢出),有没有办法标记.cs中的一段语句,使得vs在设计模式下不调用这段语句,这样设计视图就不会加载失败了,有人知道怎么用么? 解决方案 解决方案二:你确定是写在了构造函数中,而不是写到设计器的代码里去了?解决方案三:使得vs在设计模式下不调用这段语句,这样设计视图就不会加载失败了,----------如果你用户控件的DLL需要登录才能使用,你即使想出办法跳

vs 2013 中的.aspx文件的设计视图与源视图不同步

问题描述 在aspx文件中拖入一个chart控件,做了编辑后在源视图中没有出现,设计视图再一刷新竟然chart没有了有的时候源视图会有设计视图的内容,但是设计视图中的chart做了修改后运行,页面上显示的还是以前的没修改前的内容,就是说编辑后的内容没有保存.这个问题的核心就是设计视图所做的操作没有和源视图同步,不知道大家遇到过这个问题没有,如何解决?很愁人的问题,工作到这里没发往下做了! 解决方案 解决方案二:你是否是在运行时的页面修改的,如果是的话那就修改不了的..如果不是,还真没遇到过.解决

中文Access2000速成教程--1.3 在“设计”视图中设计表_Access

第三讲 在"设计"视图中设计表 为了能像在中文Visual FoxPro 6使用"表设计器"那样在中文Access2000中设计表,需要通过"设计"视图来进行操作,其步骤如下所述. 步骤一.在"员工工时与工资"数据库窗口中单击"新建"按钮,如图12所示.然后在图13所示的"新建表"对话框的列表中选定"设计视图"项,并单击"确定"按钮. 图12单击这

Access 2007表的数据表视图和设计视图

在Access中,"表"用于存储具体的数据,是Access数据库最核心的部分.Access2007表包括"数据表视图"."设计视图"."数据透视表视图"和"数据透视图视图".当新建一个Access2007表时,默认打开数据表视图.用户可以在打开的"数据表"功能区的"视图"分组中单击"视图"按钮,并在打开的视图列表中选择其他视图,如图20090104