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