Изменение цвета фона для ячейки WPF DataGrid в зависимости от выбора и значения - PullRequest
0 голосов
/ 18 февраля 2012

Я пытаюсь добиться этого: Когда пользователь выбирает одну или несколько ячеек в сетке данных, у всех дубликатов должен быть изменен цвет фона .

У меня есть этот xaml

<Window x:Class="NotesOnFretboard.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DataGrid ItemsSource="{Binding}" AutoGenerateColumns="true"  Margin="12,110,12,29" Name="dataGrid1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" IsReadOnly="True" />
    </Grid>
</Window>

код позади:

public MainWindow()
{
    InitializeComponent();
    DataTable dt = CreateDataTable();

    dataGrid1.ItemsSource = dt.DefaultView;
}

Итак, я заполняю сетку данных с использованием DataTable (10 строк, 25 столбцов). В этой таблице данных есть несколько повторяющихся значений.

Когда пользователь выбирает одну или несколько ячеек в сетке данных, у всех дубликатов должен быть изменен цвет фона!

Пожалуйста, помогите!

// Андерс

Ответы [ 2 ]

1 голос
/ 03 декабря 2013

Вы можете изменить свой класс коллекции, чтобы он имел свойство указывать, должен ли он быть выделен или нет, а затем связать это свойство (через конвертер) со свойством элемента, для которого вы хотите изменить цвет. Вы могли бы ответить на выборку / щелчок и изменить свой параметр ItemSource «selected» на true / false в зависимости от того, какие критерии вы хотите.

Так что-то вроде:

<sdk:DataGrid x:Name="NoteList"
    AutoGenerateColumns="False"
    GridLinesVisibility="None"
    HeadersVisibility="None"
    IsReadOnly="True"
    ItemsSource="{Binding NoteList,Mode=OneWay}">
    <sdk:DataGrid.Columns>
        <sdk:DataGridTemplateColumn Width="Auto">
            <sdk:DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding NoteDescription, Mode=OneWay}"
                             Background="{Binding NoteHighlighted, 
                                Converter={StaticResource BooleanToColourConverter}}"/>
                </DataTemplate>
            </sdk:DataGridTemplateColumn.CellTemplate>
        </sdk:DataGridTemplateColumn>
    </sdk:DataGrid.Columns>
</sdk:DataGrid>
1 голос
/ 19 февраля 2012

вы должны использовать триггеры, чтобы достичь этого, ознакомьтесь с этим всеобъемлющим руководством: Стилизация сетки данных Microsoft WPF

...