WPF ImageSource liaison avec convertisseur Personnalisé
J'ai un modèle simple pour une zone de liste déroulante structurées de cette manière:
<ComboBox DockPanel.Dock="Left" MinWidth="100" MaxHeight="24"
ItemsSource="{Binding Actions}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name}" Width="100" />
<Image Source="{Binding Converter={StaticResource TypeConverter}}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
Donc, si j'utilise ce code, tout fonctionne:
<TextBlock Text="{Binding Name}" Width="100" />
<!--<Image Source="{Binding Converter={StaticResource TypeConverter}}" /> -->
<Image Source="{StaticResource SecurityImage}" />
Mais si j'utilise le convertisseur, il ne fonctionne plus.
C'est le convertisseur, mais je ne sais pas comment je peux reportez-vous à la ressource statique à partir de là ...
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var type = (Action)value;
var img = new BitmapImage();
switch (type.ActionType)
{
case ActionType.Security:
img.UriSource = new Uri("StructureImage", UriKind.Relative);
break;
case ActionType.Structural:
img.UriSource = new Uri("SecurityImage", UriKind.Relative);
break;
}
return img;
}
J'ai mis à jour mon post pour répondre à vos questions.
OriginalL'auteur Raffaeu | 2010-07-08
Vous devez vous connecter pour publier un commentaire.
Essayez d'utiliser le Commutateur Convertisseur écrit par Josh, qui devrait fonctionner pour vous:
SwitchConverter –
Pas besoin d'écrire votre convertisseur, votre code devrait ressembler à ceci -
Update1:
Voici le code de SwitchConverter comme De Josh site semble être en panne -
Update2:
Un Autre SwitchConverter mise en œuvre à partir de Microsoft Source de Référence.
Ajouté le code pour SwitchConverter.
Le lien est mort, mais vous pouvez accéder à l'article ici
merci beaucoup!
vous avez oublié la condition (MyCondition) de se lier à: il faut <Image Source="{Binding MyCondition Converter={StaticResource ActionIcons}}" />
OriginalL'auteur akjoshi
Lors de l'utilisation de
Image.UriSource
, vous devez spécifier le fichier relatif chemin d'accès à vos images si les images ont été ajoutés à votre projet et de leur "Action de génération" a été réglé sur "Ressources". E. g. si vous avez mis vos images dans un dossier de projet dans Visual Studio appelé "images", vous pouvez consulter les images de la manière suivante:Si les images ne sont pas construit comme une ressource, vous devez utiliser le chemin complet du fichier c'est à dire
EDIT:
Si vous mettez vos images dans votre Application resourcedictionary, vous pouvez toujours y accéder de la manière suivante:
Si vous mettez les ressources quelque part d'autre, vous pouvez utiliser un
IMultiValueConverter
au lieu deIValueConverter
pour votre convertisseur. Ensuite, votre typeconverter ressemblerait à quelque chose comme ce qui suit:et votre XAML devrait ressembler à ceci:
Enfin, ce serait comment vous pouvez définir vos ressources:
Le code ci-dessus est non testé!
Vérifier mes modifications.
Meilleure réponse de l'OMI
OriginalL'auteur Jakob Christensen