в WPF изменение цвета связанной строки на DataGrid - PullRequest
0 голосов
/ 11 августа 2011

Я довольно новичок в связывании и вообще в WPF.

Теперь я создал DataGrid в своем представлении XAML.Затем я создал два DataGridTextColumns

DataGridTextColumn col1 = new DataGridTextColumn();
        col1.Binding = new Binding("barcode");

Затем я добавил столбцы в dataGrid.Когда я хочу добавить новый элемент в сетку данных, я могу просто сделать:

dataGrid1.Items.Add(new MyData() { barcode = "barcode", name = "name" });

Это замечательно и прекрасно работает (я знаю, что есть много способов сделать это, но это самый простойдля меня сейчас).

Однако проблема возникает, когда я пытаюсь сделать следующее;

Я хочу добавить эти элементы в таблицу данных, но с разными цветами переднего плана в зависимости от определенных условий,Т.е. -

if (aCondition)
  dataGrid.forgroundColour = blue;
  dataGrid.Items.Add(item);

1 Ответ

3 голосов
/ 11 августа 2011

Используйте триггеры, например:

<DataGrid.RowStyle>
    <Style TargetType="{x:Type DataGridRow}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding ACondition}" Value="True">
                <Setter Property="TextElement.Foreground" Value="Blue" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</DataGrid.RowStyle>

Для того, чтобы это работало, ваши предметы должны иметь свойство ACondition.

Редактировать: Пример (предполагается, что вы можете захотеть изменить свойство во время выполнения и, следовательно, реализует INotifyPropertyChanged)

public class MyData : INotifyPropertyChanged
{
    private bool _ACondition = false;
    public bool ACondition
    {
        get { return _ACondition; }
        set
        {
            if (_ACondition != value)
            {
                _ACondition = value;
                OnPropertyChanged("ACondition");
            }
        }
    }

    //...

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...