Как выделить строку вида сетки, если одно значение объекта больше другого? - PullRequest
1 голос
/ 05 августа 2011

хотели бы знать, как выделить строку вида сетки, если какое-либо значение объекта больше другого? (Считайте, что вид сетки привязан к наблюдаемой коллекции)

Спасибо.

Ответы [ 3 ]

4 голосов
/ 05 августа 2011

Поместите свойство в класс предметов в вашей наблюдаемой коллекции, которое будет установлено в true / false, в зависимости от необходимого сравнения. Затем вы сможете связать это свойство в DataTrigger для стиля в ItemContainerStyle объекта DataGrid.

Попробуйте это ...

    <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>
2 голосов
/ 05 августа 2011

Вам потребуется реализовать конвертер для> сравнения, но это показывает выделение

        <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>
0 голосов
/ 31 августа 2017

Используйте следующий код. Это мне подходит.

 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....
            }

LoadingRow = "DataGrid_LoadingRow" для сетки данных в WPF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...