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

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

Представьте плитку Scrabble в виде кнопки: на ней большая буква в центре и маленькая цифра в правом нижнем углу. Я добиваюсь именно такого эффекта.

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

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


person Sailing Judo    schedule 12.12.2008    source источник


Ответы (3)


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

person Sailing Judo    schedule 12.12.2008

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

Expander является подклассом HeaderedContentControl, у него два «содержимого»: заголовок и содержимое.

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

‹ContentPresenter ContentSource =" Header "/›

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

person Nir    schedule 14.12.2008

Я не мог создать 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>
person Tomáš Kafka    schedule 23.06.2009