我的目标是制作一个包含两个内容值的Button。
想象一下拼字游戏图块作为按钮:它在中间有一个大字母,在右下角有一个小数字。这就是我想要的效果。
我制作了一个按钮,里面有两个ContentPresenter对象,我给每个ContentPresenters一个不同的风格。但是,我还没有找到一种方法给每个演示者一个单独的值(即,如果我将按钮的内容设置为“X”,那么两个ContentPresenters都显示“X”,虽然风格不同)。
我如何实现目标?我猜我的做法完全错了......
答案 0 :(得分:2)
答案 1 :(得分:1)
在http://msdn.microsoft.com/en-us/library/ms753296.aspx
处查看Expander示例ControlTemplateExpander是HeaderedContentControl的子类,它有两个“内容”:标题和内容
控件模板有两个ContentPresenter元素,未绑定到默认内容属性的ContentPresenter定义为:
< ContentPresenter ContentSource =“Header”/>
如果您需要使用Button而又不想为第二个内容添加其他属性,则可以使用附加属性,数据将第二个ContentPresnter Content属性绑定到该属性。
答案 2 :(得分:0)
我创建了具有多个“内容插槽”here的UserControl - 它比从HeaderedControl派生更好,因为您不限制插槽数。
样本用法:
<Window x:Class="TkMVVMContainersSample.Services.TaskEditDialog.ItemEditView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Common="clr-namespace:TkMVVMContainersSample.Views.Common"
Title="ItemEditView"
>
<Common:DialogControl>
<Common:DialogControl.Heading>
<!-- Heading string goes here -->
</Common:DialogControl.Heading>
<Common:DialogControl.Control>
<!-- Concrete dialog's content goes here -->
</Common:DialogControl.Control>
<Common:DialogControl.Buttons>
<!-- Concrete dialog's buttons go here -->
</Common:DialogControl.Buttons>
</Common:DialogControl>
</Window>