Майк,
Я решил эту проблему, обернув контроль окна, и отлов выбора изменился событие обернутого окна сетки.
Под вашим контролем подключите событие Loaded вашего элемента управления, а когда оно загружено, установите для переменной логического элемента boolean значение true. Затем, когда вы перехватываете событие изменения сетки внутренней таблицы данных, только поднимите свой собственный измененный случай, если вы управляете, загружается. Когда это будет сделано, вы можете вернуться к элементу OnApplyTemplate и установить выбранный индекс вашей внутренней сетки данных в -1 и выбранный элемент ни к чему. Поскольку настройка индекса и элемента произойдет до того, как ваш контроль завершит загрузку, событие с измененным выбором не будет срабатывать. Я пробовал это как в среде с вкладками, так и без табуляции, и, похоже, это работает без проблем. Теперь, чтобы немного сложнее, вы, возможно, заметили, что при сортировке сетки данных Windows (в то время как данные привязаны к элементу ItemsSource) он всегда выбирает верхний элемент отображаемых данных. Это, конечно, приведет к событию с измененным выбором и переместится к элементу, который ранее не был выбран, и, насколько я вижу, не следует выбирать. Чтобы справиться с этим, вам нужно будет сделать немного более сложное кодирование. Если вы заметили, что когда вы поймали событие изменения внутренней сетки и просмотрели его выбранный элемент, есть только несколько случаев, когда выбранный элемент не настроен ни на что, то есть, когда элемент больше не выбран (т. Е. , выбор очищается) или когда (СОВЕТ) сортировки столбцов. Когда вы сортируете, срабатывает два события: сначала отменяется выбор элемента (SelectedItem is Nothing), а второй - выбор верхнего элемента в списке (SelectedIndex 0). Теперь, если вы должны поместить флаг в обработчик события для изменения выбора внутренних сеток, и поймал тот факт, что элемент ничего, вы можете отслеживать предыдущий выбранный элемент, а затем задавать выбранный элемент сетки внутренних данных к ранее выбранному элементу.
Это решает проблему прилично и, как всегда, при обработке окна может быть нежелательный результат, но, насколько я могу судить, это единственный способ обойти первую строку, выбранную при загрузке проблема. Я могу только представить себе, однако, что это будет исправлено M $ в какой-то момент.
Я надеюсь, что это помогает,
Спасибо,
Скотт