Стиль кнопки, которая может представлять несколько текстовых строк? - PullRequest
1 голос
/ 29 июня 2011

Мне нужен стиль кнопки, который будет представлять 3 разных текста связанного укуса. Теперь я могу легко передать одну текстовую строку в Content Presenter, где Content = "{TemplateBinding Content}". Мне нужно быть в состоянии передать 3 строки аналогично 3-му текстовому блоку в стиле кнопки или использовать несколько предъявителей контента. Мне интересно, как я могу это сделать. Какие идеи высоко ценятся?

1 Ответ

2 голосов
/ 29 июня 2011

Вы можете использовать пользовательский шаблон данных:

<Button>
    <Button.ContentTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="1" />
                <TextBlock Text="2" />
                <TextBlock Text="3" />
            </StackPanel>
        </DataTemplate>
    </Button.ContentTemplate>
</Button>

Вы можете поменять или изменить макет, изменив StackPanel.

Если это должен быть стиль, вы можете использовать:

<Style TargetType="Button">
    <Setter Property="ContentTemplate">
        <Setter.Value>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding One}" />
                    <TextBlock Text="{Binding Two}" />
                    <TextBlock Text="{Binding Three}" />
                </StackPanel>
            </DataTemplate>
        </Setter.Value>
    </Setter>
</Style>

А затем вам нужно определить собственный класс для передачи трех значений следующим образом:

public class MyClass {
    public string One { get; set; }
    public string Two { get; set; }
    public string Three { get; set; }
}

А затем используйте его так:

<Button>
    <local:MyClass One="1" Two="2" Three="3" />
</Button>

Где local относится к пространству имен MyClass.

...