如何制作具有多个内容值的Button?

时间:2008-12-12 20:15:13

标签: wpf xaml contentpresenter

我的目标是制作一个包含两个内容值的Button。

想象一下拼字游戏图块作为按钮:它在中间有一个大字母,在右下角有一个小数字。这就是我想要的效果。

我制作了一个按钮,里面有两个ContentPresenter对象,我给每个ContentPresenters一个不同的风格。但是,我还没有找到一种方法给每个演示者一个单独的值(即,如果我将按钮的内容设置为“X”,那么两个ContentPresenters都显示“X”,虽然风格不同)。

我如何实现目标?我猜我的做法完全错了......

3 个答案:

答案 0 :(得分:2)

巴哈......我想我现在知道该怎么做了。我应该自己控制而不是修改Button。如果我在WinForms中工作,这对我来说是显而易见的,但由于某些原因,所有这些Xaml都让我变得愚蠢。

答案 1 :(得分:1)

http://msdn.microsoft.com/en-us/library/ms753296.aspx

处查看Expander示例ControlTemplate

Expander是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>