web-dev-qa-db-fra.com

Comment définir la source d'image en C # sur XAML Static Resource par programme?

J'ai ce ResourceDictionary dans Main.xaml:

<Window.Resources>
    <ResourceDictionary>
        <BitmapImage x:Key="Customer" UriSource="Icons/customer.png"/>
        <BitmapImage x:Key="Project" UriSource="Icons/project.png"/>
        <BitmapImage x:Key="Task" UriSource="Icons/task.png"/>
    </ResourceDictionary>
</Window.Resources>

J'ai initialement défini l'image en utilisant:

<Image Name="TypeIcon" HorizontalAlignment="Left" VerticalAlignment="Center"
    Source="{StaticResource Customer}" Height="16" Width="16"/>

J'essaye de changer le TypeIconSource de Customer à Project dans une méthode C #.

J'ai essayé d'utiliser:

TypeIcon.Source = "{StaticResource Project}";

Mais je reçois cette erreur:

Impossible de convertir implicitement le type string en System.Windows.Media.ImageSource

J'ai essayé de définir l'image en utilisant new ImageSource(), mais cela ne fonctionne pas non plus.

Comment puis-je modifier le Source de l'image par programmation en C #?

8
Danny Beckett

Après beaucoup de recherches sur Google, tout en écrivant cette question, j'ai compris comment le faire:

TypeIcon.Source = (ImageSource) Resources["Project"];
14
Danny Beckett

Ce n'est pas pour les ressources statiques mais ça sera peut-être utile quand même ... :)

c'est-à-dire comment définir dynamiquement l'arrière-plan de la grille

var myBrush = new ImageBrush();
            var image = new Image
                            {
                                Source = new BitmapImage(
                                    new Uri(
                                        "pack://application:,,,/YourAppName;component/Images/Boo.png"))
                            };
myBrush.ImageSource = image.Source;
MainGrid.Background = myBrush;

c'est-à-dire comment définir dynamiquement l'icône de l'application

var idleIco = new Image
            {
                Source = new BitmapImage(
                    new Uri(
                        "pack://application:,,,/YourAppName;component/Images/idle.ico"))
            };
SomeObjectYouAreUsingToSet.IconSource =idleIco.Source;
10
Developer

Vous pouvez utiliser la classe ImageSourceConverter pour obtenir ce que vous voulez, par exemple:

img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Assets/check.png");
3