我有一个被连续调用的方法,该方法使用WPF更改窗口上的图像源。一切正常,但是我绝对没有接受过培训,只是从头开始。
private void UpdateLBUImage(int val)
{
if (val == 1)
{
//Bitmap Creation
var gc = new Uri("pack://application:,,,/Images/check.png");
var gcb = new BitmapImage(gc);
StatusImage.Source = gcb;
}
else
{
//Bitmap Creation
var rx = new Uri("pack://application:,,,/Images/redx.png");
var rxb = new BitmapImage(rx);
StatusImage.Source = rxb;
}
}
我的问题是,我是否一遍又一遍地重新创建位图图像?那不好吗,或者会导致我的应用出现问题?
答案 0 :(得分:1)
每次调用您的方法时,您都在创建一个新的BitmapImage
。如果Uris不变,则可以定义两个静态字段以防止发生这种情况:
private static readonly BitmapImage gcb = new BitmapImage(new Uri("pack://application:,,,/Images/check.png"));
private static readonly BitmapImage rxb = new BitmapImage(new Uri("pack://application:,,,/Images/redx.png"));
private void UpdateLBUImage(int val)
{
if (val == 1)
{
StatusImage.Source = gcb;
}
else
{
StatusImage.Source = rxb;
}
}
然后将创建两个BitmapImage
对象,无论调用UpdateLBUImage
方法的次数如何。
答案 1 :(得分:0)
mm8说的是事实)
但是,为什么不想要这样:
<Image>
<Style TargetType="Image">
<Setter Property="Source" Value="path1"/>
<Style.Triggers>
<DataTrigger Binding="{Binding SomeBoolFlag}" Value="True">
<Setter Source="path2"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image>