【问题标题】:style trigger on listview subitem列表视图子项上的样式触发器
【发布时间】:2015-10-19 00:09:04
【问题描述】:

我有一个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 样式)中,因为它只需要应用于特定的单元格(子项 - 布尔值),但是我似乎找不到正确的绑定类型。任何人都可以在这方面帮助我,或者为我指明正确的方向来完成这项工作......

【问题讨论】:

    标签: c# wpf data-binding converter


    【解决方案1】:

    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}" />
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-18
      • 2017-07-31
      • 2012-04-23
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多