Если честно не знаю, сказывается мое небольшое понимание принципов 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 из кода выше находится в коде кнопки...
Делает то же самое что и код в прошлой части (только таблица была заполнена при создании формы) но после нажатия видим что сейчас оно сработало...
[Ссылки могут видеть только зарегистрированные пользователи. ]
Что это, баг? Фича? Особая магия WPF?
Проект: [Ссылки могут видеть только зарегистрированные пользователи. ]
Последний раз редактировалось Sinyss; 14.02.2012 в 23:53.
Причина: сори, забыл проект вставить )
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.