WPF アイテム (現在はタブ コントロールですが、将来的には ListBox、ListView、および ComboBox に対してこれを行う必要があります) の選択変更を防ぐ方法を探しています。
このスレッドに出くわし、回答としてマークされたのと同じ手法を使用しようとしました。
この手法では、タブ コントロールの項目のCollectionViewを取得し、 CollectionView の CurrentChanging イベントを処理して、選択が行われないようにします。
何らかの理由で、コードで CurrentChanging イベントが発生しません。
これは、私が使用している非常に単純なユーザー コントロールです。3 つのタブを持つタブ コントロールがあります。
(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>
ユーザー コントロールの VB.NET コードでは、タブ コントロールの項目の CollectionView を取得し、AddHandler メソッドを使用してイベントを監視しています。
(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
MainTabControl_ItemSelecting メソッドにブレークポイントを設定したのですが、一向にヒットしません。
私は何を間違っていますか?
ありがとう、
-フリニー