использование шаблонов элементов управления, которые отличаются незначительно

#wpf #controltemplate

#wpf #controltemplate

Вопрос:

у меня есть следующий шаблон элемента управления:

     <ControlTemplate x:Key="GrayButton" TargetType="{x:Type Button}">
        <Grid>
            <Image x:Name="GrayButtonImage" Source="/Server;component/Images/bg.bmp"/>
            <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="White" Text="{x:Static props:Resources.IDS_ABORT}"/>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="IsEnabled" Value="True">
                <Setter TargetName="GrayButtonImage" Property="Source" Value="/Server;component/Images/GrayButtonOn.bmp"/>
            </Trigger>
            <Trigger Property="IsEnabled" Value="False">
                <Setter TargetName="GrayButtonImage" Property="Source" Value="/Server;component/Images/GrayButton.bmp"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>
 

и вот одна кнопка, использующая шаблон элемента управления:

 <Button Height="40" HorizontalAlignment="Left" Margin="250,334,0,0" Name="ejf" VerticalAlignment="Top" Width="106" Template="{StaticResource GrayButton}" Click="execJournalPrgm" IsEnabled="False"/>
 

Мне нужно примерно еще 4-8 кнопок, которые различаются только по названию / цвету текста… каков наилучший способ сделать это, не повторяя определение шаблона элемента управления 4-8 раз?

любая помощь будет с благодарностью принята.

Ответ №1:

Один из способов сделать это — создать пользовательский элемент управления (путем наследования от Button ) и настроить все необходимые свойства, которые должны быть привязаны к шаблону по умолчанию. Тогда вам нужно только создать экземпляры этого элемента управления и установить эти свойства вместо того, чтобы что-либо менять в шаблоне.