Modifier l'icône du bouton par programmation dans WPF
Actuellement j'ai un bouton qui a une icône/image sur elle. J'ai configuré le bouton et l'image dans le code XAML:
<Button Height="69" HorizontalAlignment="Left" Margin="-2,0,0,0" Name="toggleBroadcast" VerticalAlignment="Top" Width="64" Grid.Row="1" Opacity="0.5" Click="changeBroadcastState_Click">
<Image Source="Images\playIcon.png" />
</Button>
J'ai besoin d'être en mesure de modifier par programmation de ce bouton, l'image de playIcon à stopIcon. Comment puis-je faire cela?
source d'informationauteur BSchlinker
Vous devez vous connecter pour publier un commentaire.
Vous pouvez accomplir cela en changeant le contenu de la touche, par l'intermédiaire d'un gestionnaire d'événement.
Vous pouvez définir à la fois l'Icône "lecture" et "Stop" Icône comme une ressource, en vertu de
Window.Resources
comme suit:Maintenant, lorsque le bouton est cliqué, vous pouvez simplement modifier le contenu du bouton à une autre ressource (l'icône d'arrêt). Dans le bouton gestionnaire d'événement, vous pouvez le faire:
C#
Edit: plus Courte notation
Espère que cette aide, laissez-moi savoir si vous avez plus de questions.
Si vous avez votre définition de l'image quelque chose comme ceci:
Puis dans votre code où vous voulez faire le commutateur n'ont tout simplement:
où
image
est défini comme:Bien sûr, il n'compter sur vous en utilisant le pattern MVVM et la mise en œuvre de la
INotifyPropertyChanged
interface dans votre code.Utiliser un DataTrigger (edit) de l'Image dans le Style (/edit) sur la condition de changement:
La
myCondition
variable serait alors une propriété booléenne dans votre ViewModel (ou, de façon plus générale, le Contrôle du DataContext), quelque chose commeCela peut également inclure un setter et pourrait aussi bien être un simple auto propriété. Comme avec les autres MVVM réponse, il va s'appuyer sur le ViewModel pour mettre en œuvre
INotifyPropertyChanged
.La bonne chose est, une fois que la condition n'est plus satisfaite, le DataTrigger automatiquement la propriété de la Source de revenir à sa valeur initiale.
Avertissement: je n'ai aucun moyen de tester ce droit maintenant, afin de prendre cela avec un grain de sel et probablement un peu de débogage effort...
Essayer ce code