0
<ControlTemplate TargetType="{x:Type ListBoxItem}">
                                    <StackPanel>
                                        <StackPanel Margin="0,0,28,0" Orientation="Horizontal" Visibility="{Binding IsEditable,Converter={StaticResource BooleanToVisibilityConverter}}">
                                            <TextBlock Foreground="Gray" Text="{Binding DateCreated,Converter={StaticResource DateTimeConverter}}" FontFamily="/Assets/Fonts/Berthold Akzidenz Grotesk BE Regular.ttf" FontSize="16"/>
                                            <TextBlock Text=":" Foreground="Gray"/>
                                            <TextBlock Width="20"/>
                                            <TextBox ScrollViewer.HorizontalScrollBarVisibility="Disabled"  BorderThickness="0" Name="TrainerNoteText" Text="{Binding TrainerNote}" FontFamily="/Assets/Fonts/Berthold Akzidenz Grotesk BE Regular.ttf" Foreground="Black" FontSize="16" TextWrapping="Wrap" KeyUp="EditTrainerNote" Width="400"/>
                                        </StackPanel>
                                    </StackPanel>
                                </ControlTemplate>

上記のコントロール テンプレートはリストビューにあります。中のテキストボックスは編集可能です。したがって、ユーザーが Enter キーを押したときに、それに関連付けられている現在のオブジェクトを取得する必要があります。これを行う方法?

4

2 に答える 2

0

ListView レベルで KeyDown RoutedEvent をリッスンできます。

http://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.keydown.aspx

これは添付イベントであり、そのハンドラーは VisualTree のどこにでも配置できます。

次に例を示します。

<StackPanel TextBox.KeyDown="OnKeyDownHandler">
  <TextBox Width="300" Height="20"/>
</StackPanel>

そして、これはハンドラーです:

public void OnKeyDownHandler(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
        TextBox tbx = (TextBox)sender;
        tbx.....
    }
}
于 2013-10-25T08:25:03.410 に答える