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 TypeIcon
Source
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
enSystem.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 #?
Après beaucoup de recherches sur Google, tout en écrivant cette question, j'ai compris comment le faire:
TypeIcon.Source = (ImageSource) Resources["Project"];
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;
Vous pouvez utiliser la classe ImageSourceConverter
pour obtenir ce que vous voulez, par exemple:
img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Assets/check.png");