2012-12-04 68 views
0

如何在Windows RT/Windows Store應用程序中使用<ListView>控件,在Excel中實現此類效果(不含灰色線條)(假設我有一個列表整數用作我的ItemsSource)。從本質上講,我想知道直接應用樣式或設置背景顏色的最有效方法,這取決於每個數據綁定值的含義。如何根據Windows RT上的綁定值更改背景顏色

data bars

我們真的需要something like this。但看起來像Windows RT應用程序不支持數據觸發器。

回答

3

在您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}"/> 
+0

我會測試這個今天,非常感謝你。這是很好的,並會允許最終的靈活性..但是訴諸於程序化的方法是唯一的方法嗎?我寧願一些可以避免重新編譯的東西。 – GONeale

+0

好吧,我並不是要諷刺,但是你必須編寫一些代碼來使其發生這種或那種方式,所以程序化的方法是唯一的方法:)但嚴重的是,我不知道任何其他方法。 – StaWho

+0

好吧,讓我換句話說,只是聲明;意味着避免編譯。我真的不喜歡指定基於C#代碼的視圖應該如何顯示。我認爲我的觀點/用戶界面應該全心全意地在XAML中聲明。 – GONeale

相關問題