在Image的Source XAML-attribute中生成随机数

时间:2015-09-23 12:49:04

标签: wpf xaml wpf-controls

作为Windows应用程序的一部分(我必须接管),我在XAML文件中有以下行:

<Image Grid.Row="1" Grid.Column="5" 
  x:Name="PART_batterySymbol"
  Stretch="Fill" 
  Source="/CustomControls;component/Resources/Symbol_Battery_2_50x50.png"/>

它在ListBox行中显示电池图标:

screenshot

是否可以在XAML 中包含一个源代码,它会在我拥有的3张图片之间随机选择?

  • Symbol_Battery_1_50x50.png
  • Symbol_Battery_2_50x50.png
  • Symbol_Battery_3_50x50.png

我是WPF和C#的新手,但我有一些Adobe / Apache Flex的开发经验,可以使用{ .... }在MXML 文件中嵌入一些代码括号

1 个答案:

答案 0 :(得分:2)

我认为最容易得到你想要的东西,特别是如果你的图像在深层复杂树中,是这样的:

public static class BatteryIcons {
    private static readonly Random _random = new Random();
    public static ImageSource Random {
        get
        {
            var id = _random.Next(1, 4);
            // read random icon from your resources given id and return
            // alternatively, use default ImageSourceConverter
            string path = "get path to your icon";
            return (ImageSource) new ImageSourceConverter().ConvertFromString(path);
        }
    }
}

然后在你的xaml:

<Image Source="{x:Static wpf:BatteryIcons.Random}" />

所以你基本上引用了静态类的静态属性,每次调用这个属性时,它都会返回你电池图标的随机图像。