Как сделать кнопку с несколькими значениями содержимого?

Моя цель - создать кнопку с двумя значениями содержимого.

Представьте плитку «Эрудит» в виде кнопки: в центре она имеет большую букву, а справа внизу - маленькую. Это тот эффект, которого я добиваюсь.

Я сделал кнопку, в которой есть два объекта ContentPresenter, и я назначил каждому из ContentPresenter свой стиль. Однако я не нашел способа присвоить каждому докладчику отдельное значение (т. Е. Если я установлю для Content кнопки значение «X», то оба ContentPresenters отобразят «X», хотя и в разных стилях).

Как я могу достичь своей цели? Я предполагаю, что мой подход совершенно неверный ....

12.12.2008 20:15:12
3 ОТВЕТА
РЕШЕНИЕ

Бах ... Я думаю, что знаю, что теперь делать. Я должен сделать свой собственный контроль, а не изменять кнопку. Это было бы очевидно для меня, если бы я работал в WinForms, но по какой-то причине весь этот Xaml делает меня глупым.

2
12.12.2008 20:39:51

Взгляните на образец ControlTemplate Expander по адресу http://msdn.microsoft.com/en-us/library/ms753296.aspx.

Расширитель является подклассом HeaderedContentControl, он имеет два «содержимого»: заголовок и содержимое

Шаблон элемента управления имеет два элемента ContentPresenter, ContentPresenter, который не связан со свойством содержимого по умолчанию, определяется как:

<ContentPresenter ContentSource = "Заголовок" />

Если вам нужно использовать кнопку, и вы не хотите добавлять другое свойство для второго содержимого, вы можете использовать присоединенное свойство, и данные связывают второе свойство ContentPresnter с ним.

1
14.12.2008 09:36:47

Я delaled с созданием 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>
0
23.05.2017 12:01:25