Вы должны определить состояние воспроизведения в вашей viewmodel (Playing / Stopped) и привязать Button.Style к этому свойству с помощью конвертера.В вашем конвертере верните другой стиль (взятый из App.Current.Resources) в зависимости от текущего состояния.
Редактировать:
Вот пример вашего конвертера долженвыглядит следующим образом:
public class StateStyleConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (PlaybackState)value == PlaybackState.Playing ? App.Current.Resources["RoundPlay"] : App.Current.Resources["RoundStop"];
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
В этом примере PlaybackState является перечислением:
public enum PlaybackState
{
Playing,
Stopped
}
Затем вы должны добавить свойство состояния в модель представления (часть, в которой вы уведомляете об изменении, зависитна платформе, которую вы используете для MVVM):
private PlaybackState state;
public PlaybackState State
{
get { return state; }
set
{
state = value;
RaiseNotifyPropertyChanged("State");
}
}
Объявите свой конвертер в XAML:
<UserControl.Resources>
<converters:StateStyleConverter x:Key="StateStyleConverter"/>
</UserControl.Resources>
И, наконец, привяжите его к кнопке:
<Button Width="72" Height="72" Style="{Binding State, Converter={StaticResource StateStyleConverter}}"
DataContext="{Binding ElementName=this, Path=DataContext}"
cmd:ButtonBaseExtensions.Command="{Binding PlayStopCommand}"
/>