Mike,
J'ai résolu ce problème en enveloppant le contrôle des fenêtres, et attrapant la sélection événement changé de la grille de fenêtres emballés.
Dans votre contrôle, raccordez l'événement Loaded de votre contrôle et, une fois chargé, définissez une variable de membre privé booléenne sur true. Ensuite, lorsque vous interceptez l'événement de sélection de la grille de données interne, ne faites que soulever votre propre événement modifié si vous contrôlez est chargé. Lorsque cela est fait, vous pouvez maintenant revenir au sous-élément OnApplyTemplate et définir l'index sélectionné de votre grille de données interne sur -1 et l'élément sélectionné sur rien. Étant donné que le réglage de l'index et de l'élément aura lieu avant que le contrôle ne soit terminé, l'événement modifié par sélection ne se déclenchera pas. J'ai essayé ceci dans un environnement à onglets et sans tabulation, et cela semble fonctionner sans problème. Maintenant, pour un problème un peu plus difficile, vous avez peut-être remarqué que lorsque vous triez la grille de données Windows (alors que ce sont des données liées à un ItemsSource), elle sélectionne toujours l'élément supérieur des données affichées. Ceci, bien sûr, déclenchera la sélection de l'événement modifié, et passera à un élément qui n'a pas été précédemment sélectionné, et autant que je peux voir, ne devrait pas être sélectionné. Pour gérer cela, vous devrez faire un codage un peu plus compliqué. Si vous remarquez que lorsque vous interceptez l'événement de sélection de la grille interne et que vous observez l'élément sélectionné, il n'y a que quelques cas où l'élément sélectionné n'est défini sur rien, c'est-à-dire lorsqu'il n'y a plus d'élément sélectionné. la sélection est effacée) ou lorsque (HINT) les colonnes sont triées. Lorsque vous effectuez un tri, deux événements se déclenchent: la désélection de l'élément (SelectedItem is Nothing) et la sélection de l'élément supérieur dans la liste (SelectedIndex 0). Maintenant, si vous deviez placer un drapeau dans le gestionnaire d'événements pour la sélection des grilles internes, et que l'élément ne correspond à rien, vous pouvez suivre l'élément sélectionné précédemment, puis définir l'élément sélectionné de la grille de données interne. à l'élément précédemment sélectionné. Cela résout bien le problème, et comme toujours, il peut y avoir des résultats indésirables lors de l'emballage d'un contrôle Windows, mais pour autant que je sache, cela semble être le seul moyen de contourner la première ligne sélectionnée en charge problème. Je peux seulement imaginer, cependant, que cela va être fixé par M $ à un moment donné.
J'espère que cette aide,
Merci,
Scott