Я пытаюсь создать настраиваемый элемент управления, основанный на элементе управления текстовым полем. Этот элемент управления текстовыми полями содержит кнопку, список и всплывающее окно. Я пытаюсь добавить обработчик события к событию мыши мыши в функции OnApplyTemplate этого класса. Когда я перехожу к отладке, вызывается OnApplyTemplate и добавляется код обработчика события.wpf vb.net Пользовательский контроль AddHandler не работает
Моя проблема заключается в том, что, когда я нажимаю кнопку, обработчик события Sub DropDownButton_MouseDown не вызывается.
вот мой класс:
Imports System.Windows.Controls.Primitives
<TemplatePart(Name:="PART_ControlBorder", Type:=GetType(Border))> _
<TemplatePart(Name:="PART_DropDownButton", Type:=GetType(Button))> _
<TemplatePart(Name:="PART_Popup", Type:=GetType(Popup))> _
<TemplatePart(Name:="PART_ListBox", Type:=GetType(ListBox))> _
Public Class AutoCompleteTextBox
Inherits TextBox
#Region "DECLARATIONS"
Private Mainborder As Border
Private popup As Popup
Private listBox As ListBox
Private dropDownButton As Button
#End Region
#Region "METHODS"
Private Sub PopupOpen()
If popup IsNot Nothing And popup.IsOpen = False Then
popup.IsOpen = True
Else
Return
End If
End Sub
Private Sub DropDownButton_MouseDown(sender As Object, e As System.EventArgs)
PopupOpen()
End Sub
#End Region
#Region "APPLY TEMPLATE"
Public Overrides Sub OnApplyTemplate()
MyBase.OnApplyTemplate()
If Me.Template IsNot Nothing Then
Dim button__1 As Button = TryCast(Me.Template.FindName("PART_DropDownButton", Me), Button)
If button__1 IsNot dropDownButton Then
'First unhook existing handler
If dropDownButton IsNot Nothing Then
RemoveHandler dropDownButton.MouseDown, AddressOf DropDownButton_MouseDown
End If
dropDownButton = button__1
If dropDownButton IsNot Nothing Then
AddHandler dropDownButton.MouseDown, AddressOf DropDownButton_MouseDown
End If
End If
End If
End Sub
#End Region
#Region "CONSTRUCTOR"
Sub New()
DefaultStyleKeyProperty.OverrideMetadata(GetType(AutoCompleteTextBox), New FrameworkPropertyMetadata(GetType(AutoCompleteTextBox)))
End Sub
#End Region
End Class
Я использую WPF .net 4.5 В Visual Studio 2012. Вот мой XAML для пользовательского элемента управления называется AutoCompleteTextBox, управление определяется в другом проекте в рамках решения:
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:krisis="clr-namespace:Krisis.Controls;assembly=Krisis.Controls"
Title="MainWindow" Height="350" Width="525">
<Grid>
<krisis:AutoCompleteTextBox SearchText="Bob" Width="200" MinHeight="35" FontSize="18" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Window>
Может кто-то пожалуйста, помогите мне подключить этот обработчик событий так, чтобы при нажатии на кнопку подлодку DropDownButton_MouseDown называется.
Заранее спасибо