Je cherche un moyen d'empêcher une modification de sélection dans les éléments WPF (le contrôle Tab en ce moment, mais dans le futur cela devra être fait pour ListBoxes, ListViews et ComboBoxes).Événement de modification de sélection dans WPF
Je suis tombé sur this thread et j'ai essayé d'utiliser la même technique qui a été marquée comme réponse.
Dans cette technique, vous récupérez le CollectionView pour les éléments du contrôle onglet et gérez le CollectionView's CurrentChanging event pour empêcher la sélection de se produire.
Pour une raison quelconque, l'événement CurrentChanging n'est jamais déclenché dans mon code.
Voici mon contrôle utilisateur très simple avec lequel je travaille. Il a un contrôle de tabulation avec 3 onglets.
(XAML)
<UserControl x:Class="UserControlWithTabs"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<TabControl x:Name="MainTabControl">
<TabItem Header="First Tab">Content for the first tab</TabItem>
<TabItem Header="Second Tab">Content for the second tab</TabItem>
<TabItem Header="Third Tab">Content for the third tab</TabItem>
</TabControl>
</UserControl>
Dans mon code VB.NET pour le contrôle de l'utilisateur, je récupère simplement le CollectionView pour les éléments du contrôle onglet et en utilisant la méthode AddHandler pour surveiller l'événement.
(VB.NET)
Public Class UserControlWithTabs
Private WithEvents mainTabCollectionView As CollectionView
Private Sub UserControlWithTabs_Loaded(sender As Object, e As System.Windows.RoutedEventArgs) Handles Me.Loaded
mainTabCollectionView = CollectionViewSource.GetDefaultView(MainTabControl.Items)
AddHandler mainTabCollectionView.CurrentChanging, AddressOf MainTabControl_ItemSelecting
End Sub
Private Sub MainTabControl_ItemSelecting(ByVal sender As Object, ByVal e As System.ComponentModel.CurrentChangingEventArgs)
End Sub
End Class
Je mets un point d'arrêt sur la méthode MainTabControl_ItemSelecting, mais jamais touché.
Qu'est-ce que je fais mal?
Merci,
-Frinny
Merci beaucoup! – Frinavale