Как правильно оформить стиль кнопки в WPF? - PullRequest
0 голосов
/ 28 июля 2010

Я знаю, что это основной вопрос, но у меня возникли некоторые затруднения с пониманием, как это сделать правильно.

Учитывая следующий XAML:

<Button>
    <Grid Grid.Row="1">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="16" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <Image Grid.Column="0" Width="16" Height="16" Source="Resources/accept.png" />
        <TextBlock Grid.Column="1" Margin="2">Continue</TextBlock>
    </Grid>
</Button>

Как быпреобразовать это в стиль, чтобы его можно было легко использовать повторно?Что если бы я хотел предоставить источник изображения и текст в атрибуте?Возможно ли это?

В соответствующей заметке, каковы лучшие методы структурирования файлов, в которых вы храните свои стили и т. Д.?Вы просто перетаскиваете их в новый файл XAML и вставляете их в папку с решением для стилей?

Я очень новичок в WPF, поэтому снова извиняюсь за основной вопрос.Ian

Ответы [ 2 ]

1 голос
/ 28 июля 2010

Изменить 1:

Существует несколько способов стилизации элементов управления.Вы можете получить к ним доступ как StaticResource или предоставить TargetType, чтобы все стили применялись к элементам управления этого типа.

Для параметризации вашего стиля вы могли бы рассмотреть привязку данных.Например, если у вас есть модель, которая предоставляет контент для этих кнопок, вы можете попробовать что-то вроде:

<Grid.Resources>
    <Style TargetType="Button">
        <Setter Property="Content">
            <Setter.Value>
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="16" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <Image Grid.Column="0" Width="16" Height="16" Source="{Binding Path=Image}" />
                    <TextBlock Grid.Column="1" Margin="2" Text="{Binding Path=Text}" />
                </Grid>
            </Setter.Value>
        </Setter>
    </Style>
</Grid.Resources>

<Button x:Name="myButton1"  Width="100" Height="100" />

Это будет пример того, как установить контент.

myButton1.DataContext = new ButtonCaption {Text = "Testing"};

public class ButtonCaption
{
    public Image Image { get; set; }
    public string Text { get; set; }
}
1 голос
/ 28 июля 2010

что вам действительно нужно, так это шаблон управления, а не просто стиль. Здесь - довольно приличное учебное пособие.

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