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

如图,我自定义一个CheckBox,用了一个Ellipse。但是目前只能把长宽规定死,试过Width="{TemplateBindingCheckBox.Width}不会... 如图,我自定义一个CheckBox,用了一个Ellipse。但是目前只能把长宽规定死,试过Width ="{TemplateBinding CheckBox.Width}不会报错,但是尺寸变为0了(不显示)。
Mickal小米,zhouxiang_1216,两位,可否帮忙解决以下问题?
自定义CheckBox,左边是一个红圈,右边是false,点击变成蓝圈,true。
拖动的时候,圈始终是正圆,且圈和文字占的宽度比例始终是一样的。
不用后台代码。vs2010.如果能上传附件上来我就采纳。
展开
 我来答
Mickal小米
2013-05-03 · TA获得超过3666个赞
知道大有可为答主
回答量:1542
采纳率:100%
帮助的人:1771万
展开全部
改下容器就行了:
<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}"
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhouxiang_1216
2013-05-03 · TA获得超过2591个赞
知道大有可为答主
回答量:1286
采纳率:33%
帮助的人:1372万
展开全部
CheckBox的高度和宽度本来就是“Auto”,你画了个圆不定义高度和宽度确实显示不出来,你是想要做什么?不定义Ellipse的大小,让它随CheckBox的高度变化吗?这个可以有的,需要代码说一下,希望对你有帮助,有疑问请追问或是Hi
更多追问追答
追问
让它随CheckBox的高度变化吗---就是这个需求。
追答
用一个DockPanel,前面不写了,直接从ControlTemplate写:

CheckBox需要定义高度,先试试吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式