如何以编程方式将 C# 中的图像源设置为 XAML 静态资源
本文关键字:设置 图像 XAML 资源 静态 编程 方式 | 更新日期: 2023-09-27 18:30:23
我在Main.xaml
中有这个ResourceDictionary
:
<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>
我最初使用以下方法设置图像:
<Image Name="TypeIcon" HorizontalAlignment="Left" VerticalAlignment="Center"
Source="{StaticResource Customer}" Height="16" Width="16"/>
我正在尝试在 C# 方法中将TypeIcon
的Source
从客户更改为项目。
我试过使用:
TypeIcon.Source = "{StaticResource Project}";
但是我收到此错误:
无法将类型
string
隐式转换为System.Windows.Media.ImageSource
我尝试使用 new ImageSource()
定义图像,但这也不起作用。
如何在 C# 中以编程方式更改图像的Source
?
经过多次谷歌搜索,在写这个问题时,我想出了该怎么做:
TypeIcon.Source = (ImageSource) Resources["Project"];
它不适用于静态资源,但无论如何也许会很有用...... :)
即如何动态设置网格的背景
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;
即如何动态设置应用程序的图标
var idleIco = new Image
{
Source = new BitmapImage(
new Uri(
"pack://application:,,,/YourAppName;component/Images/idle.ico"))
};
SomeObjectYouAreUsingToSet.IconSource =idleIco.Source;
您可以使用
ImageSourceConverter
类来获取所需的内容,例如:
img1.Source = (ImageSource)new ImageSourceConverter().ConvertFromString("/Assets/check.png");