1

我的目标是制作一个具有两个 Content 值的 Button。

将 Scrabble 瓷砖想象成一个按钮:它的中心是大字母,右下角有一个小数字。这就是我想要的效果。

我制作了一个按钮,其中包含两个 ContentPresenter 对象,并且我为每个 ContentPresenter 赋予了不同的样式。但是,我还没有找到一种方法来给每个演示者一个单独的值(即,如果我将按钮的内容设置为“X”,那么两个 ContentPresenter 都显示“X”,尽管样式不同)。

我怎样才能实现我的目标?我猜我的方法是完全错误的......

4

3 回答 3

2

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

于 2008-12-12T20:39:51.593 回答
1

在http://msdn.microsoft.com/en-us/library/ms753296.aspx查看 Expander 示例 ControlTemplate

Expander 是 HeaderedContentControl 的子类,它有两个“内容”:Header 和 Content

控件模板有两个 ContentPresenter 元素,未绑定默认内容属性的 ContentPresenter 定义为:

<ContentPresenter ContentSource="Header" />

如果您需要使用 Button 并且不想为第二个内容添加另一个属性,则可以使用附加属性并将第二个 ContentPresnter Content 属性绑定到它。

于 2008-12-14T09:36:47.527 回答
0

我在这里创建了具有多个“内容槽”的 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>
于 2009-06-23T17:54:58.517 回答