[英]How do you set a Xaml defined, Window.Resource Image programmatically?
我有一个xaml文件,其中包含我在窗口中使用的一系列资源。 具体来说,我有两个Image
对象。 我需要在Window的构造函数中设置这些图像,而不是对URI位置进行编码。 我怎样才能做到这一点?
我进行了搜索,并尝试设置image .Source
属性。 没事。 供参考,这是在我的xaml文件中声明这些图像的方式:
<Window.Resources>
<Image x:Key="iUpdate" />
<Image x:Key="iDelete" />
</Window.Resources>
以下是它们用于按钮内容的方式:
<DataTemplate>
<DockPanel>
<Button Name="UpdateChange" Content="{StaticResource iUpdate}" Width="24" />
<Button Name="DeleteChange" Content="{StaticResource iDelete}" Width="24" />
<Label Content="{Binding name}" />
</DockPanel>
</DataTemplate>
这是我设置图像来源失败的尝试。
//In my constructor...
// iUpdate is a property on the Window
iUpdate = (Image)FindResource("iUpdate");
iUpdate = new Image();
iUpdate.Source = ImageHelpers.ConvertBitmapToImageSource(Common.LoadImage("edit.ico"));
仅供参考,我无法在我的xaml文件中设置源,因为对Common.LoadImage(...)
的调用是一个特殊的调用,它可以解析文件的位置。 各个用户之间的差异可能很大,这就是为什么首先要使用辅助方法的原因。
您可以在MainWindow类中声明并绑定到两个属性,而不是将Image控件用作资源。
public partial class MainWindow : Window
{
public MainWindow()
{
UpdateImage = ImageHelpers.ConvertBitmapToImageSource(...);
DeleteImage = ImageHelpers.ConvertBitmapToImageSource(...);
InitializeComponent();
}
public ImageSource UpdateImage { get; set; }
public ImageSource DeleteImage { get; set; }
}
您可以通过为窗口分配名称来绑定到这些属性。
<Window ... x:Name="window">
并声明一个ElementName绑定:
<Button ...>
<Button.Content>
<Image Source="{Binding UpdateImage, ElementName=window}"/>
</Button.Content>
</Button>
为了回答您的问题,您的问题是,在将新的Image实例分配给资源实例之后,立即将其分配给了iUpdate
字段。 您的代码应该看起来像这样:
iUpdate = (Image)Resources["iUpdate"];
iUpdate.Source = ImageHelpers.ConvertBitmapToImageSource(...);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.