Выделение элементов в DataGrid

 
0
 
.NET
ava
ReFLeXive | 25.05.2012, 19:54
Здравствуйте, форумчане!
2 дня пытаюсь решить одну проблему. Использую VS2010, .Net 4.0, WPF.
На форму добавлен Datagrid, прописаны столбцы, сделана привязка к данным, заполнен ItemsSource. Все работает, все отображается. НО! почему то не выделяются нормально строки. В других datagrid'ах проекта таких проблем нету. Смотрите сами:
Тут нормально выделяются элементы (есть синяя подсветка)
user posted image
А тут не выделяется (нет подсветки). Соответственно selectedIndex = -1, selectedItem - непонятно какой элемент.
user posted image

И в первой таблице, и во второй в ItemsSource передается лист составных объектов.
Вот какой XAML при добавлении datagrid:

<DataGrid Grid.Row="1" Grid.Column="2" Name="questionsInQuestionnaireTable" ItemsSource="{Binding}" AutoGenerateColumns="False" CanUserAddRows="False"
MouseDoubleClick="questionsInQuestionnaireTable_MouseDoubleClick" SelectionUnit="FullRow">
<DataGrid.Columns>
<DataGridTextColumn Header="Поз." Binding="{Binding Path=QuestionPosition}" Width="40"/>
<DataGridTextColumn Header="Вопрос" Binding="{Binding Path=Question.Title}" Width="*"/>
<DataGridTextColumn Header="Весовой коэффициент" Binding="{Binding Path=QuestionWeight}" Width="200" />
<DataGridTextColumn Header="Используется?" Binding="{Binding Path=IsEnabled}" Width="90" />
<DataGridTextColumn Header="Последний?" Binding="{Binding Path=IsLast}" Width="90" />
</DataGrid.Columns>
</DataGrid>


а вот такие объекты я заношу в качестве ItemsSource:

public class QuestionnairePatternItem : IdTitle
{
/// <summary>
/// сслыка на шаблон анкеты, в котором располагается данный итем.
/// нужен для удобства идентификации итемов между собой
/// </summary>
public int PatternId { get; set; }

/// <summary>
/// Вопрос
/// </summary>
public Question Question { get; set; }

/// <summary>
/// Позиция вопроса в шаблоне анкеты. Определяет порядок следования вопросов
/// друг за другом, когда запускается мастер анкетирования
/// </summary>
public int QuestionPosition { get; set; }

/// <summary>
/// Упорядоченный список ответов
/// </summary>
public List<Answer> AnswerList { get; set; }

/// <summary>
/// Признак контрольного вопроса
/// </summary>
public bool IsLast { get; set; }

/// <summary>
/// Весовой коэффициент, показывающий степень влияния данного вопроса на итоговый бал в анкете
/// </summary>
public double QuestionWeight { get; set; }

/// <summary>
/// ПРизнак того, активен ли вопрос в шаблоне анкеты
/// </summary>
public bool IsEnabled { get; set; }
}


List этих объектов берется из БД (вручную, с использованием SqlCommand и SqlReader).
На англоязычных ресурсах где то находил подобное поведение, там советовали попробовать поменять вариант формирования этого листа объетов. Но я не приложу ума как это сделать иначе - там и так все элементарно. И, что самое интересное, в остальных местах проекта такой подход работает!
Помогите, пожалуйста, советом или ссылкой. Из за этого вся работа стопорится!
Comments (1)
ava
ReFLeXive | 30.05.2012, 06:15 #
Фуух, выяснилось в чем дело! Это был мой косяк =)
СУть в том, что в событии selection_changed у меня происходило изменение выбранного элемента и при этом происходил вызов события selection_changed.
ВОбщем, спасибо за внимание!
Если кто то столкнется с подобным, обратите внимание на код, который срабатывает на событии изменения выделения в datagrid!
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit