Мне нужна кнопка, которая меняет свой Backgroundimage каждый раз, когда меняется логическое значение (IsFavourite).Я пробовал это с DataTrigger, но он не знает свойство: «Источник».Можете ли вы помочь мне, я не то, чтобы в xaml-код :-(
<Style x:Key="starButtonStyle" TargetType="{x:Type Button}">
<Setter Property="IsEnabled" Value="True" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Image x:Name="PART_img" Source="/FtpUploadClient;component/media/star_off_48.png" Height="28" Width="28" HorizontalAlignment="Center" VerticalAlignment="Center"/>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="PART_img"
Property="Source"
Value="/FtpUploadClient;component/media/star_48.png" />
</Trigger>
<DataTrigger Binding="{Binding Path=IsFavourite}" Value="True">
<Setter Property="Source" Value="/FtpUploadClient;component/media/star_48.png" />
</DataTrigger>
<DataTrigger Binding="{Binding Path=IsFavourite}" Value="False">
<Setter Property="Source" Value="/FtpUploadClient;component/media/star_off_48.png" />
</DataTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
private void StarButton_Click(object sender, RoutedEventArgs e)
{
IsFavourite = !IsFavourite;
}
private bool isFavourite = false;
public bool IsFavourite
{
get { return isFavourite; }
set
{
isFavourite = value;
OnPropertyChanged("IsFavourite");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void OnPropertyChanged(string name)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(name));
}
}
- Кнопка-событие Click вызывает метод, который изменяет IsFavourite:
<Button Content="Star" Style="{DynamicResource starButtonStyle}" Click="StarButton_Click" />