Как сделать обычную текстовую кнопку Silverlight? - PullRequest
1 голос
/ 08 октября 2010

Мне просто нужна кнопка без фона или чего-либо, кроме простого текста.Я сделал следующее, и кнопка не отображается вообще:

<UserControl.Resources>
    <ControlTemplate x:Key="linkButtons" TargetType="Button">
        <TextBlock Foreground="White" FontSize="28" FontFamily="Verdana" Padding="10"></TextBlock>
    </ControlTemplate>
</UserControl.Resources>


<Button Template="{StaticResource linkButtons}" Content="Hello World!"/>

Ответы [ 2 ]

5 голосов
/ 08 октября 2010

Это потому, что TextBlock внутри шаблона элемента управления не имеет привязки шаблона. Создайте такой атрибут:

<TextBlock Foreground="White" FontSize="28" FontFamily="Verdana" Padding="10" Text="{TemplateBinding Content}" />

Не уверен, что это правильный синтаксис, но это концепция.

3 голосов
/ 08 октября 2010

Проблема в том, что кнопка предназначена для содержания, а не текста - это своего рода ContentControl. Итак, для отображения содержимого в вашем шаблоне должно быть:

   <ContentPresenter x:Name="contentPresenter" 
    Content="{TemplateBinding Content}"
    ContentTemplate="{TemplateBinding ContentTemplate}"
    VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
    HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
    Margin="{TemplateBinding Padding}"/>

ИЛИ , вы можете создать пользовательский элемент управления на основе кнопки, добавить к нему свойство Text, использовать текущий шаблон TextBlock в шаблоне (но с Text="{Binding Text}") и оставьте ContentPresenter вне своего шаблона. Создание пользовательского элемента управления немного сложнее, чем просто создание шаблона для существующего, но это действительно лучший способ получить именно то, что вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...