Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Баг WPF или фича?(DataGrid)

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C# только в данном разделе

Ответ
 
Опции темы
Старый 14.02.2012, 23:51   #1
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Баг WPF или фича?(DataGrid)

Если честно не знаю, сказывается мое небольшое понимание принципов WPF или же реально баг...
Допустим у нас есть форма, на которой существуют button1 и dataGrid1.
В dataGrid1 изменено только свойство AutoGenerateColumns на "True".
Итак, пускай инициализация формы происходит так:
Код:
        public MainWindow()
        {
            InitializeComponent();
            List<Player> pList = new List<Player>(); // создадим список объектов который будет находиться в dataGrid1
            pList.Add(new Player("This", 200)); // заполняем его значениями
            pList.Add(new Player("is", 10));
            pList.Add(new Player("so", 60));
            pList.Add(new Player("sick", 80));
            dataGrid1.ItemsSource = pList; // собственно заполняем таблицу значениями из нашего списка.

            foreach (DataGridColumn item in dataGrid1.Columns) // для каждой колонки из dataGrid1.
            {
                if (item.Header.ToString() == "Name") // Если название колонки Name значит меняем его на "Имя!!!!"
                {
                    item.Header = "Имя!!!!";
                }
                if (item.Header.ToString() == "Value")
                {
                    item.Header = "Значение";
                }
            }
        }
Класс Player выглядит вот так:
Код:
    public class Player
    {
        public Player(string pName, int pValue)
        {
            this.Name = pName;
            this.Value = pValue;
        }
        public string Name { get; set; }
        public int Value { get; set; }
    }
Итак мы заполняем таблицу значениями класса Player. Благодаря свойству AutoGenerateColumns = "True". Колонки будут называться так, как поля класса и в них будут храниться значения из соответствующих свойств. Так как все это происходит во время инициализации формы, то пользователь должен увидеть сразу переименованные столбцы... но мы видим:
[Ссылки могут видеть только зарегистрированные пользователи. ]
А теперь самая интересная часть... Пускай foreach из кода выше находится в коде кнопки...
Код:
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            foreach (DataGridColumn item in dataGrid1.Columns)
            {
                if (item.Header.ToString() == "Name")
                {
                    item.Header = "Имя!!!!";
                }
                if (item.Header.ToString() == "Value")
                {
                    item.Header = "Значение";
                }
            }
        }
Делает то же самое что и код в прошлой части (только таблица была заполнена при создании формы) но после нажатия видим что сейчас оно сработало...
[Ссылки могут видеть только зарегистрированные пользователи. ]
Что это, баг? Фича? Особая магия WPF?
Проект: [Ссылки могут видеть только зарегистрированные пользователи. ]

Последний раз редактировалось Sinyss; 14.02.2012 в 23:53. Причина: сори, забыл проект вставить )
  Ответить с цитированием
Старый 15.02.2012, 01:17   #2
Читер-спонсор
 Рыцарь-защитник
Аватар для Nickitee
 
Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(Nickitee сломал счётчик популярности :(
Регистрация: 28.08.2009
Сообщений: 603
Популярность: 19129
Золото Zhyk.Ru: 500
Сказал(а) спасибо: 84
Поблагодарили 602 раз(а) в 321 сообщениях
 
По умолчанию Re: Баг WPF или фича?(DataGrid)

Я конечно не мега-кодер, но всё же, попробуй:
Код:
try
{
List<Player> pList = new List<Player>(); // создадим список объектов который будет находиться в dataGrid1
            pList.Add(new Player("This", 200)); // заполняем его значениями
            pList.Add(new Player("is", 10));
            pList.Add(new Player("so", 60));
            pList.Add(new Player("sick", 80));
            dataGrid1.ItemsSource = pList; // собственно заполняем таблицу значениями из нашего списка.
}
finally
{
foreach (DataGridColumn item in dataGrid1.Columns) // для каждой колонки из dataGrid1.
            {
                if (item.Header.ToString() == "Name") // Если название колонки Name значит меняем его на "Имя!!!!"
                {
                    item.Header = "Имя!!!!";
                }
                if (item.Header.ToString() == "Value")
                {
                    item.Header = "Значение";
                }
            }
}
________________
We are Ducks. We are birds. We like bread. We cryack. Cryack.
  Ответить с цитированием
Старый 15.02.2012, 01:40   #3
 Старший сержант
Аватар для Sinyss
 
Sinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака НоррисаSinyss троюродный дядя Чака Норриса
Регистрация: 29.07.2011
Сообщений: 197
Популярность: 8989
Сказал(а) спасибо: 45
Поблагодарили 175 раз(а) в 139 сообщениях
Отправить сообщение для Sinyss с помощью Skype™
 
По умолчанию Re: Баг WPF или фича?(DataGrid)

Цитата:
Сообщение от NickiteeПосмотреть сообщение
Я конечно не мега-кодер, но всё же, попробуй:

конструкция try{} catch{} finally{} для отлавливания исключений... тут их нету и не может быть, так как все верно...
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 13:33.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net