Je veux personnaliser l'état basculant du bouton bascule dans WPF. Je veux définir une image sur le bouton bascule lorsqu'il est activé et définir une autre image quand elle est éteinte. Pour ce faire, j'ai pensé utiliser des déclencheurs. C'est comme ça que j'ai fini par faire, L'extrait ci-dessus semble fonctionner correctement pour deux éléments de la liste de liste. Si plus d'un élément a la valeur de liaison, le statut est vrai, cela ne fonctionne pas (cela ne fonctionne que pour un tel objet). S'il vous plaît dites-moi si je continue dans la bonne direction. Dites-moi également d'autres moyens d'y parvenir. P> p>
4 Réponses :
Le problème ici est que vous utilisez Ceci devrait fonctionner pour vous: p> Notez que vous pouvez améliorer la performance de ceci en utilisant un image code> ressources. L'image
code> dans vos ressources est une instance concrète d'un contrôle. Il ne peut être que dans un endroit à la fois. Ainsi, lorsque vous avez plus d'un élément de votre liste ...
Imagesource Code> Pour chaque fichier image dans vos ressources, puis référencez ceci dans l'image
code>. Cela signifie efficacement que chaque image n'est chargée qu'une fois du disque, plutôt que 2 * N fois (où N est le nombre d'éléments de votre liste.) P> p>
L'extrait ci-dessus lance une exception. Voici les détails, impossible d'ajouter du contenu de type 'System.Windows.Controls.Image' à un objet de type 'system.Object'. Erreur à l'objet 'system.windows.controls.image' dans le fichier de balisage
Cette réponse sera T'aider. Dans votre ensemble, j'ai pris une toggleboutton et je l'ai cité pour regarder comme togglebutton dans une TreeView (la + / - partie à développer des nœuds d'effondrement). Vous aurez juste besoin de changer les chemins qui dessinent les signes - et +, pour montrer à vos images à la place.
Voici personnalisé à vous, il suffit de mettre une image appelée "on.jpg" et une autre appelée "off.jpg "Dans votre répertoire C: \, et il devrait fonctionner en copiant / coller dans votre fenêtre: p>
Qu'est-ce que Expressimage dans l'extrait ci-dessus? Il n'y a pas de types de déclenchement appelés expansimage. Pourriez-vous s'il vous plaît vérifier?
Le nom de l'image dans votre modèle:
Désolé, je ne l'ai pas lu complètement. Merci. Ça marche maintenant. Pourquoi ne fonctionnait-il pas pour moi? Pourquoi ne venait-il que une fois ??
Je ne suis pas vraiment sûr en ce moment, quand je reçois 10 minutes, je vais regarder votre code et vous faire savoir ce qui n'allait pas.
Like Drew Noakes a dit, dans mon snappte, il n'y avait que deux images. Donc, seuls deux articles fonctionnaient correctement. J'ai résolu ce problème avec l'extrait suivant. simple, j'ai déplacé les déclencheurs dans le modèle de données. Ne sais pas si c'est la bonne réponse. Semble fonctionner p> p>
Intéressant, je reçois l'erreur 'System.Windows.Controls.Image' n'est pas une valeur valide pour 'Setter.Value'; Les valeurs dérivées du visuel ou du contenu ne sont pas prises en charge.
Merci d'avoir posté cette réponse.
Voici un ToggleButton avec 3 images et une pop up:
Les images sont stockées dans des ressources sous forme de bitmapimage afin d'éviter de changer de visuaux sur les trigeurs. P>
Les fichiers image doivent être ajoutés à des ressources, puis les fichiers ajoutés à la "RESOCES "Le dossier du projet doit être marqué comme Il applique également une opacité à la commande d'image lorsque le toggleboutton isenabled = false; P> Code: P> <ToggleButton
x:Name="btnToggleImage"
Margin="5"
Width="50"
Height="50"
>
<ToggleButton.Resources>
<BitmapImage x:Key="imgNormal" UriSource="/YOURPROJECTNAME;component/Resources/YourUncheckedImage.png"/>
<BitmapImage x:Key="imgHover" UriSource="/YOURPROJECTNAME;component/Resources/YourHoverImage.png"/>
<BitmapImage x:Key="imgChecked" UriSource="/YOURPROJECTNAME;component/Resources/YourCheckedImage.png"/>
</ToggleButton.Resources>
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Image
x:Name="PART_Image"
Source="{StaticResource imgNormal}"
/>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="true">
<Setter TargetName="PART_Image" Property="Source" Value="{StaticResource imgChecked}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="PART_Image" Property="Source" Value="{StaticResource imgHover}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="PART_Image" Property="Opacity" Value="0.6"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToggleButton.Style>
</ToggleButton>
<Popup
x:Name="popup1"
PlacementTarget="{Binding ElementName=btnToggleImage}"
PopupAnimation="Slide"
IsOpen="{Binding ElementName=btnToggleImage, Path=IsChecked, Mode=TwoWay}"
StaysOpen="False"
MinWidth="{Binding ElementName=btnToggleImage, Path=Width}">
<Grid Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<!--<ItemsPresenter/>-->
<Label Content="Hello Wolrd!"/>
</Grid>
</Popup>