在您ItemTemplete
創建矩形,然後用下面ValueConverter
public sealed class IntegerToColorBrushConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
switch ((int)value)
{
case 5:
return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Green);
case 10:
return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Yellow);
case 15:
return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Orange);
case 25:
return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Red);
case 0:
return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.DarkGreen);
default:
return new Windows.UI.Xaml.Media.SolidColorBrush(Windows.UI.Colors.Transparent);
}
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
}
XAML其Fill
屬性綁定到你的列表元素:
<ResourceDictionary>
<local:IntegerToColorBrushConverter x:Key="IntegerToColorBrushConverter"/>
<DataTemplate x:Key="DataTemplate1">
<Grid>
<Rectangle Fill="{Binding Converter={StaticResource IntegerToColorBrushConverter}, Mode=OneWay}" />
</Grid>
</DataTemplate>
</ResourceDictionary>
<ListView ItemsSource="{Binding Elements}" ItemTemplate="{StaticResource DataTemplate1}"/>
我會測試這個今天,非常感謝你。這是很好的,並會允許最終的靈活性..但是訴諸於程序化的方法是唯一的方法嗎?我寧願一些可以避免重新編譯的東西。 – GONeale
好吧,我並不是要諷刺,但是你必須編寫一些代碼來使其發生這種或那種方式,所以程序化的方法是唯一的方法:)但嚴重的是,我不知道任何其他方法。 – StaWho
好吧,讓我換句話說,只是聲明;意味着避免編譯。我真的不喜歡指定基於C#代碼的視圖應該如何顯示。我認爲我的觀點/用戶界面應該全心全意地在XAML中聲明。 – GONeale