请教WPF高手,如何使ControlTemplate内的元素自动适应整个控件的大小?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教WPF高手,如何使ControlTemplate内的元素自动适应整个控件的大小?相关的知识,希望对你有一定的参考价值。

如图,我自定义一个CheckBox,用了一个Ellipse。但是目前只能把长宽规定死,试过Width ="TemplateBinding CheckBox.Width不会报错,但是尺寸变为0了(不显示)。
Mickal小米,zhouxiang_1216,两位,可否帮忙解决以下问题?
自定义CheckBox,左边是一个红圈,右边是false,点击变成蓝圈,true。
拖动的时候,圈始终是正圆,且圈和文字占的宽度比例始终是一样的。
不用后台代码。vs2010.如果能上传附件上来我就采纳。

参考技术A 改下容器就行了:
<ControlTemplate TargetType="x:Type CheckBox">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<Ellipse Name="E1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Fill="Red"/>
</Border>
<ContentPresenter Grid.Column="1" HorizontalAlignment="TemplateBinding HorizontalContentAlignment" Margin="TemplateBinding Padding" RecognizesAccessKey="True" SnapsToDevicePixels="TemplateBinding SnapsToDevicePixels" VerticalAlignment="TemplateBinding VerticalContentAlignment"/>
</Grid>追问

BulletDecorator没有用吗?
还有如果我想实现不管怎么拖动,始终那是一个圆形,又怎么实现?不用后台代码。

追答

这还不简单,用属性绑定不就行了
Height="Binding ActualWidth, ElementName=E1, Mode=OneWay"

追问

请看问题补充

追答

好的,搞定!~

追问

啥呀,你怎么弄了一个和Windows自带的一模一样的来呀?发错没有?

本回答被提问者采纳
参考技术B CheckBox的高度和宽度本来就是“Auto”,你画了个圆不定义高度和宽度确实显示不出来,你是想要做什么?不定义Ellipse的大小,让它随CheckBox的高度变化吗?这个可以有的,需要代码说一下,希望对你有帮助,有疑问请追问或是Hi追问

让它随CheckBox的高度变化吗---就是这个需求。

追答

用一个DockPanel,前面不写了,直接从ControlTemplate写:

CheckBox需要定义高度,先试试吧

追问

请看问题补充

追答

........

请教高手GridView编辑时生成DropDownList列

就是在点击编辑列的时候
protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)

this.GridView1.EditIndex = e.NewEditIndex;

bangding();//从新绑定数据源

这样 该列就会进入编辑模式 就是所有列都成为文本框
我现在想然某列成为DropDownList下拉列表 该如何实现 请高手指教
大哥 详细点 就一句话 我知道啥啊
------------------------------------
...............哦上帝啊 你们理解错了 我说的是在编辑是编辑按钮 就是运行出来 我点编辑按钮 然后这一列不就成文本框了嘛 我想让其中一个变成下拉列表框。。。。。我当然知道楼下2位说的 苍天啊
~

选择要添加的某列,然后gridview右上角的小箭头,编辑列,选择要修改的那列字段,然后点击将该字段转换成Templete(右边蓝色的字),然后确定,然后在点击gridview右上角的小箭头编辑模板,选择那一列的EditTemplete,然后在拉一个DropDownList控件上去。

要注意操作的时候都要选中那一列哦。。。
参考技术A 在EditTemplete中添加DropDownList控件! 参考技术B 看一楼的。

以上是关于请教WPF高手,如何使ControlTemplate内的元素自动适应整个控件的大小?的主要内容,如果未能解决你的问题,请参考以下文章

请教C#/WPF高手,类似点击头像出来相关tooltip菜单的功能是怎么实现的?

VS菜鸟请教WPF编程中按钮事件的问题:Click和Click_1

SQL问题,请教高手

请教高手们怎样设置手机使对方听见自己号码已经过期?

如何彻底删除IE临时文件!~请教高手

请教高手:SocketAsyncEventArgs 类服务端如何设置心跳超时