Изменить изображение кнопки, у которой есть стиль - PullRequest
0 голосов
/ 31 марта 2012

Я создал стиль в файле App.xaml для кнопки

 <ControlTemplate x:Key="controlButtonFavourite" TargetType="{x:Type Button}">
            <Grid>
                <Image x:Name="imgButtonBackground" Source="/WpfApp;component/Media%20Images/MediaNavigationButtonBackground.png" Stretch="Uniform"></Image>
                <Image x:Name="imgNavigationButtonTypeFavourite" Source="/WpfApp;component/Media%20Images/MediaFav_White.png" Stretch="Uniform" Margin="9"/>
            </Grid>
            <ControlTemplate.Triggers>
                <Trigger Property="IsFocused" Value="True">
                    <Setter TargetName="imgNavigationButtonTypeFavourite" Property="Source" Value="/WpfApp;component/Media%20Images/MediaFav_Gold.png" />
                </Trigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>

Теперь я хочу изменить изображение imgNavigationButtonTypeFavourite во время выполнения для определенного условия.Я не могу понять, как я могу изменить это изображение.Подскажите пожалуйста как это возможно?

1 Ответ

2 голосов
/ 31 марта 2012

Вы можете наследовать от Button и добавить свойство зависимости для пути к изображению.Это свойство может использоваться в ControlTemplate.

public class ImageButton : Button
{
    public static readonly DependencyProperty ImagePathProperty =
        DependencyProperty.Register("ImagePath", typeof (string), typeof (ImageButton));

    public string ImagePath
    {
        get { return (string) GetValue(ImagePathProperty); }
        set { SetValue(ImagePathProperty, value); }
    }
}

Использование кнопки:

<ImageButton x:Name="imageButton" ImagePath="..." />

Код использования:

imageButton.ImagePath = "...";

Использование вшаблон:

<Setter TargetName="imgNavigationButtonTypeFavourite" Property="Source" Value="{TemplateBinding ImagePath}" />
...