[英]style trigger on listview subitem
我有一個ListView
,它是數據綁定的,可以根據進來的某些屬性對項目的行進行顏色編碼。所有這些都按預期工作。
我想重寫特定的單元格以基於不同的屬性更改其顏色。
ListView
....
<Grid>
<ListView x:Name="dbItems" ItemsSource="{Binding itemList}" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto">
<ListView.Resources>
<Style TargetType="{x:Type ListViewItem}">
<Setter Property="Background" Value="{Binding connectionStatus, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource converter}}" />
</Style>
<!--<Style TargetType="{x:Type ListViewItem.}">
<Setter Property="Background" Value="{Binding badSubItem, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource cellConverter}}" />
</Style>-->
</ListView.Resources>
<ListView.View>
<GridView>
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" />
<GridViewColumn Header="DESCRIPTION" DisplayMemberBinding="{Binding description}" />
<GridViewColumn Header="RESOURCE" DisplayMemberBinding="{Binding resource}" />
<GridViewColumn Header="SubItem" DisplayMemberBinding="{Binding subItemFound}" />
<GridViewColumn Header="Count" DisplayMemberBinding="{Binding count}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
每行的初始顏色編碼由Converter
處理。
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
switch ((Interfaces.Enum.Status)value)
{
case Interfaces.Enum.Status.Unknown:
return Brushes.LightGray;
case Interfaces.Enum.Status.Offline:
return Brushes.Red;
case Interfaces.Enum.Status.Online:
return Brushes.Green;
case Interfaces.Enum.Status.OnlineButNotInitialized:
return Brushes.OrangeRed;
default:
return Brushes.LightGray;
}
}
我希望使用另一個Converter
來改變單元格的顏色...
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (!(bool)value)
return Brushes.LightGreen;
return Brushes.Yellow;
}
問題出在注釋掉的樣式標簽(第二個ListViewItem
樣式)中,因為這僅需要應用於特定的單元格(子項-bool),但是我似乎找不到正確的綁定類型。 任何人都可以在這方面幫助我,或者為我指出正確的方向來完成此任務...
用要綁定的屬性替換IsSomething
<Style x:Key="MyDataGridCell" TargetType="DataGridCell" BasedOn="{StaticResource {x:Type DataGridCell}}">
<Setter Property="Background" Value="White"/>
<Setter Property="Foreground" Value="Black"/>
<Style.Triggers>
<Trigger Property="{Binding IsSomething}" Value="True">
<Setter Property="Background" Value="Red"/>
<Setter Property="Foreground" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
<DataGrid CellStyle="{StaticResource MyDataGridCell}" />
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.