如果某个对象值大于另一个对象值,如何突出显示gridview行?

时间:2011-08-05 14:13:56

标签: wpf data-binding

想知道如果某个对象值大于另一个对象值,如何突出显示gridview行? (考虑将gridview绑定到observablecollection)

感谢。

3 个答案:

答案 0 :(得分:4)

在可观察集合中的项目类上放置一个属性,该属性将根据您需要的比较设置为true / false。然后你应该能够在DataGrid的ItemContainerStyle上为Style的DataTrigger绑定到这个属性。

试试这个......

    <DataGrid ItemsSource="{Binding YourObservableCollection}" >
        <DataGrid.ItemContainerStyle>
            <Style>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding YourShouldHighlightProperty}" Value="True">
                        <Setter Property="Control.Background" Value="Red"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DataGrid.ItemContainerStyle>
    </DataGrid>

答案 1 :(得分:2)

您需要实现转换器来执行&gt;比较,但这显示了一个亮点

        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=IsParent}" Value="True">
                        <Setter Property="Background" Value="Gainsboro"  />
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </ListView.ItemContainerStyle>

答案 2 :(得分:0)

使用以下代码。我很喜欢。

 private void DataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
        {
            try
            {
                foreach (loadtodatagrid item in gridview.ItemsSource)
                {
                    var row = gridview.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
                    if (item.item1== item.item2)
                    {
                        row.Background = new SolidColorBrush(Colors.Yellow);
                    }
                    else
                    {
                        // row.Background = new SolidColorBrush(Colors.Green);
                    }
                }
            }
            catch(Exception ep)
            {
                //do nothing....
            }

LoadingFow =“DataGrid_LoadingRow”到WPF中的datagrid