Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Dos87
0 / 0 / 0
Регистрация: 16.06.2012
Сообщений: 2
#1

DataGrid.RowDetailsTemplate, рекурсивно отобразить innerException (рекурсия должна продолжаться до значения null)

19.06.2012, 15:50. Просмотров 598. Ответов 0
Метки нет (Все метки)

Всем привет!

Есть DataGrid, в который записываются логи из программы. Хотелось бы, чтобы при клике на строку (она же сообщение лога) выводилась дополнительная информация в RowDetails, такая как ExceptionMessage, StackTrace и InnerException. Информация вся есть, но вот проблема с отображением - не могу рекурсивно отобразить innerException (рекурсия должна продолжаться до значения null).
У меня есть класс из которого берутся данные для таблицы:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public class TableRow : INotifyPropertyChanged
{
    //Столбец в таблице (отображается нормально)
    public DateTime LogTime
    {
        get { return _logTime; }
        set { _logTime = value; NotifyPropertyChanged("LogTime"); }
    }
    private DateTime _logTime;
 
    //Столбец в таблице (отображается нормально)
    public string LoggerName
    {
        get { return _loggerName; }
        set { _loggerName = value; NotifyPropertyChanged("LoggerName"); }
    }
    private string _loggerName;
 
    //Есть ещё несколько столбцов и они нормально отображаются
 
    /* Это сведения об исключении, которые могут иметь вложенные классы такого-же типа *
    * (Код см. ниже) Их нужно отобразить в DataGrid.RowDetailsTemplate                              */
    public ExceptionContainer LogException { get; set; }
 
    public event PropertyChangedEventHandler PropertyChanged;
    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        PropertyChanged(this, new PropertyChangedEventArgs(info));
    }
}
А вот код класса-контейнера для исключений:
C#
1
2
3
4
5
6
7
public class ExceptionContainer
{
    public string Message;
    public string StackTrace;
    //Вложенный контейнер
    public ExceptionContainer InnerContainer;
}
Нужно, чтобы в RowDetails отображался TreeView или Expander с полем Message от первого контейнера, а при клике "+" отображался StackTrace и "+" для вложенного контейнера (InnerContainer) и так while(InnerContainer != null)

Спасибо!

Добавлено через 3 часа 5 минут
Решил не заморачиваться с XAML и подписался на RowDetailsVisibilityChanged, а дальше всё получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2012, 15:50
Ответы с готовыми решениями:

dataGrid binding связанные таблицы RowDetailsTemplate
Приветствую! Помогите, пожалуйста, выйти из тупика: Есть 2 таблицы, логически...

Как получить имя объекта находящегося в DataGrid.RowDetailsTemplate
Как получить имя объекта находящегося в DataGrid.RowDetailsTemplate? это...

Как при использовании свойства DataGrid.RowDetailsTemplate вызвать команду? MVVM
Есть таблица с определенными данными допустим пусть в каждой строке будут два...

Как зеркально отобразить dataGrid одного окна в dataGrid в другом окне?
Здравствуйте. Столкнулся с проблемой. Не знаю, как отобразить зеркально...

Экспорт DataGrid в Excel, Null
Добрый день! По нижеследующему коду, экспортирую данные из datagrid в таблицу...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2012, 15:50

Null cell exception Datagrid
Есть такой dataGrid1, по щелчку на элемент в таблице, в textBox выводится его...

Отобразить TreeView Рекурсивно
Здравствуйте, подскажите пожалуйста, у меня такая ситуация. нужно отобразить...

Рекурсия - задать формулу рекурсивно
Задать эту функцию рекурсией a - некоторый массив с числами. Этой функцией я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru