Changer les Images sur la Coutume de Case à cocher dans WPF
Tout ce que j'ai créé le suivant personnalisé CheckBox
qui utilise des images au lieu d'une CheckBox
. Cela fonctionne bien, cependant, je veux être en mesure de changer les images que nécessaire. Idéalement, je voudrais utiliser les ressources d'application Properties.Resources.SomeImage16
(un .fichier png). Le code XAML est
<Style x:Key="styleCustomCheckBox"
TargetType="{x:Type CheckBox}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Horizontal">
<Image x:Name="imageCheckBox"
Width="16"
Height="16"
Source="F:\Camus\ResourceStudio\Graphics\Images\UnPinned16.png"/>
<ContentPresenter VerticalAlignment="Center"/>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="imageCheckBox"
Property="Source"
Value="F:\Camus\ResourceStudio\Graphics\Images\Pinned16.png"/>
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="imageCheckBox"
Property="Source"
Value="F:\Camus\ResourceStudio\Graphics\Images\UnPinned16.png"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Avec la mise en œuvre
<ListBox SelectionMode="Single" >
<StackPanel Orientation="Horizontal">
<CheckBox Style="{StaticResource styleCustomCheckBox}"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Margin="4,0,4,0"/>
<TextBlock VerticalAlignment="Top"
Text="SomeRecentDocument.resx"/>
</StackPanel>
</ListBox>
Comment puis-je modifier les images utilisées pour la coutume CheckBox
(c'est à dire changer la épinglée/onu-épinglé à cocher/croix etc.) sans avoir à créer un nouveau style/modèle?
Merci pour votre temps.
1 - Ne pas utiliser le format Png pour tout. WPF n'est pas winforms. L'utilisation de graphiques Vectoriels chaque fois que possible. 2 - Vous souhaitez peut-être créer quelques
Si cela était permis alors un .NET application aura accès à tout lecteur.
Il n'est pas clair ce que vous demandez... est-il sur la modification de l'image en fonction de la case à cocher état? Si donc, à l'aide de déclencheurs pourrait fonctionner, mais vous avez déjà quelques triggers... est-ce que la solution que vous avez essayé n'est pas de travail et vous avez besoin d'aide à la faire fonctionner?
J'ai un travail personnalisé contrôle de case à cocher avec des images comme épinglé/détaché. Je veux savoir comment/si il est possible de changer les images de ces états lorsque j'utilise le contrôle...
comment puis-je obtenir un vecteur de l'image de mon Expression .les fichiers de conception? Je peux exporter en XAML, mais les résultats exportés pour certaines images sont complexes et constitués de plusieurs couches...
Attached Properties
et le lier à celui de la ControlTemplate
.Si cela était permis alors un .NET application aura accès à tout lecteur.
Il n'est pas clair ce que vous demandez... est-il sur la modification de l'image en fonction de la case à cocher état? Si donc, à l'aide de déclencheurs pourrait fonctionner, mais vous avez déjà quelques triggers... est-ce que la solution que vous avez essayé n'est pas de travail et vous avez besoin d'aide à la faire fonctionner?
J'ai un travail personnalisé contrôle de case à cocher avec des images comme épinglé/détaché. Je veux savoir comment/si il est possible de changer les images de ces états lorsque j'utilise le contrôle...
comment puis-je obtenir un vecteur de l'image de mon Expression .les fichiers de conception? Je peux exporter en XAML, mais les résultats exportés pour certaines images sont complexes et constitués de plusieurs couches...
OriginalL'auteur MoonKnight | 2013-08-30
Vous devez vous connecter pour publier un commentaire.
Comme déjà mentionné
@HighCore
le besoin de la capacité à utiliser des graphiques vectoriels. Dans ce cas, l'utilisation de laPath
, où enData
aux coordonnées spécifiées sur lequel l'objet est dessiné (MSDN
).Avantages:
Ne le rangez pas dans les fichiers de petite taille
De changer dynamiquement la couleur, la taille et la forme entière
Inconvénients (à mon avis):
Data
pour laPath
Environ moins: Il y a des sites spécialisés (http://www.modernuiicons.com) et des utilitaires pour convertir l'image à
Data
.De changer de style de
CheckBox
à l'aide de laPath
:Style
Using
Output
Nous pouvons également stocker les
Path's
en ressources, et se référer à eux comme comme ceci:Edit
Pour spécifier arbitraire des icônes, j'ai créé deux attachées des propriétés de dépendance (type string):
IsCheckedOnData
IsCheckedOffData
IsCheckedOnData
contientData
valeur parIsChecked = "True"
,IsCheckedOffData
valeur parIsChecked = "False"
.Maintenant, vous avez besoin seulement de déterminer les cordes d'icônes et de définir une ressource (par exemple).
Exemple complet:
XAML
Code behind
Note:
Dans le style je n'ai pas utiliséTemplateBinding
parce queTemplateBinding
ne fonctionne pas à l'extérieur d'un modèle ou à l'extérieur de son VisualTree de la propriété, de sorte que vous pouvez même pas utiliserTemplateBinding
à l'intérieur d'un modèle de déclencheur. Par conséquent, nous devons utiliser la construction{RelativeSource TemplatedParent}
et unPath
égale à la dépendance de la propriété dont la valeur que vous voulez récupérer.Veuillez voir mon edit.
Génial. Vraiment l'apprécier. Merci beaucoup et bon week-end...
La meilleure pratique serait de garder cette image de vecteur de données dans un autre fichier de ressources au lieu de la ressource locale.
Je voudrais référence plus des graphiques vectoriels complexes à partir d'un fichier de ressources. Pouvez-vous jeter un oeil à cette nouvelle question stackoverflow.com/questions/18541408/...
OriginalL'auteur Anatoliy Nikolaev
Désolé, je ne sais pas encore comment faire référence à une image de ces ressources, mais si vous pouvez ajouter les images dans un dossier nommé
Images
dans votre répertoire racine de l'application, alors vous serez en mesure de référencer les images simplement comme ceci:OriginalL'auteur Sheridan