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();
}
}