2015-06-07 56 views
2

我正在尝试设置我的应用程序的通信模块样式。我从DataTemplate中绑定的extenal API获取一些数据。我想根据Status属性的值更改ListView ItemTemplate样式。基于属性值的样式

如果状态是“新”,那么网格的边框应该是2px橙色,如果状态是“读取”,那么网格的边框应该是1px灰色。

我已经实现了这个使用转换器,但我敢打赌有更好的办法。

XAML文件

<ListView ItemsSource="{Binding ConversationsList}"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="Padding" Value="0,0,0,0"/> 
      <Setter Property="Margin" Value="0,0,0,0"/> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid BorderBrush="{Binding status, Converter={StaticResource StatusToBorder}, ConverterParameter=BorderBrush}" 
        BorderThickness="{Binding status, Converter={StaticResource StatusToBorder}, ConverterParameter=BorderThickness}" 
        Background="White" 
        Margin="5,5,5,5"> 

转换文件

class StatusToBorder : IValueConverter 
{ 
    public object Convert(object value, Type targetType, object parameter, string language) 
    { 
     var param = parameter as String; 
     var _value = value as String; 
     switch (param) { 
      case "BorderBrush": 
       if (_value == "new") 
        return "#FFFF5917"; 
       else 
        return "#FFAAAAAA"; 
      case "BorderThickness": 
       if (_value == "new") 
        return new Thickness(2, 2, 2, 2); 
       else 
        return new Thickness(1, 1, 1, 1); ; 
      default: 
       return null; 
       break; 
     } 
    } 



    public object ConvertBack(object value, Type targetType, object parameter, string language) 
    { 
     throw new NotImplementedException(); 
    } 
} 

回答

0

你需要给电网的名称在XAML。 在XAML:

<Grid x:Name=MyGrid 
    IsRead="{Binding Read}"...> 

那么你的代码中,其中为已读或不网格标明:
在Java:

MyGrid.BorderBrush = new SolidColorBrush(Windows.UI.Colors.Orange); 
MyGrid.BorderThickness = new Thickness(3); 

MyGrid.BorderBrush = new SolidColorBrush(Windows.UI.Colors.Gray); 
MyGrid.BorderThickness = new Thickness(1); 

我假设你知道如何设置DataContext的,并资源等。如果不是这样,这个啧啧涵盖数据绑定更彻底:
https://msdn.microsoft.com/en-us/library/windows/apps/jj207023(v=vs.105).aspx