0

TextBox を含むユーザー コントロールがあり、mousedown イベントをキャプチャしたいのですが、うまく動作しないようです。私の既存の動作しないコードは以下のとおりです。どんな支援も大歓迎です。

ユーザー コントロール xaml:

<UserControl x:Class="LeftLabel"
             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" Width="auto" Height="auto" >
    <StackPanel DataContext="{Binding RelativeSource={RelativeSource AncestorType={x:Type UserControl}}}">
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding Path=TextBlockText}"
                       Name="UcTextBlock"
                       Width="{Binding Path=TextBlockWidth}"
                       FontSize="{Binding Path=TextBlockFontSize}"
                       HorizontalAlignment="Right"
                       TextAlignment="Right"
                       VerticalAlignment="Center"
                       Margin="5,0,0,0" />
            <TextBox Text="{Binding Path=TextBoxText}"
                     Name="UcTextBox"
                     MouseDown="UcTextBox_MouseDown" 
                     Width="{Binding Path=TextBoxWidth}"
                     Height="{Binding Path=TextBoxHeight}"
                     FontSize="{Binding Path=TextBoxFontSize}"
                     Padding="{Binding Path=TextBoxPadding}"
                     Margin="5,0,0,0" 
                     BorderThickness="0" />
        </StackPanel>
    </StackPanel>
</UserControl>

ユーザー コントロール.vb:

Public Event TextBoxMouseDown As EventHandler
Private Sub UcTextBox_MouseDown(sender As Object, e As MouseButtonEventArgs) Handles UcTextBox.MouseDown
    RaiseEvent TextBoxMouseDown(sender, e)
End Sub

テスト目的で、UserControls を MainWindow にプログラムで追加しています。

Dim count As Integer = 1
While count < 10
    Dim ucl As New LeftLabel
    With ucl
        .Margin = New Thickness(4)
        .TextBlockText = "Label " & count.ToString
        .TextBlockWidth = 100
        .TextBlockFontSize = 12
        .TextBoxFontSize = 12
        .TextBoxHeight = 20
        .TextBoxText = "Initial Text " & count.ToString
        .TextBoxPadding = New Thickness(2)
        .TextBoxWidth = 150
        AddHandler .TextBoxMouseDown, AddressOf LabelLeftTextBoxMouseDown
    End With
    TextBoxStackPanel.Children.Add(ucl)
    count += 1
End While

Private Sub LabelLeftTextBoxMouseDown(sender As Object, e As EventArgs)
    Dim txt As TextBox = DirectCast(sender, TextBox)
    MsgBox(txt.Text)
End Sub
4

1 に答える 1