Изменить цвет фона строки представления данных XAM - PullRequest
2 голосов
/ 12 сентября 2011

существует ли какой-нибудь код, который может получить доступ к строке Datapresenter из события SelectedItemChanged, чтобы программно изменить цвет фона строки?

Что-то вроде:

presenterName.FieldLayouts[0].Fields[7].Visibility = Visibility.Collapsed;

Этот код просто сворачивает столбец, но мне нужно что-то похожее, чтобы изменить определенную строку.

Ответы [ 3 ]

2 голосов
/ 01 апреля 2012

Для этого вы захотите создать стиль и использовать DataTrigger для управления цветом записи.Целью вашего стиля может быть DataRecordCellArea или DataRecordPresenter.Если ваши данные не предоставляют свойство, которое вы можете привязать для этой цели, вы можете использовать свойство Tag Записи.

Вот пример, показывающий, как условно установить фон записи на основезначение ячейки в записи: http://devcenter.infragistics.com/Support/KnowledgeBaseArticle.Aspx?ArticleID=10103

0 голосов
/ 12 сентября 2011

Я думаю, вам может понадобиться пройтись по дереву, поскольку DataGridCellsPresenter по умолчанию не отображается.

private void DataGrid_SelectionChanged(object sender,SelectionChangedEventArgs e)
        {
            DataGridRow Row = 
                (DataGridRow)((DataGrid)sender).SelectedItem;

            DataGridCellsPresenter CellsPresenter =
                GetVisualChild<DataGridCellsPresenter>(Row);
        }

public static T GetVisualChild<T>(Visual parent) where T : Visual
        {
            T child = default(T);
            int numVisuals = VisualTreeHelper.GetChildrenCount(parent);
            for (int i = 0; i < numVisuals; i++)
            {
                Visual v = (Visual)VisualTreeHelper.GetChild(parent, i);
                child = v as T;
                if (child == null)
                {
                    child = GetVisualChild<T>(v);
                }
                if (child != null)
                {
                    break;
                }
            }
            return child;
        }
0 голосов
/ 12 сентября 2011

Я использовал событие SelectionChanged для DataGrid.

    private void myDataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        int index = myDataGrid.SelectedIndex;
        DataGridRow row = myDataGrid.ItemContainerGenerator.ContainerFromIndex(index) as DataGridRow;
        row.Background = Brushes.Red;   
    }

Это просто изменит цвет фона строки на красный.

РЕДАКТИРОВАНИЕ: Только что заметил, что вы говорите о Datapresenter от Infragistics. Не знаю, будет ли это работать для этого контроля. Наверное, что-то спросить на их форумах.

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