wpf listbox数据模板中的keyup事件

wpf listbox数据模板中的keyup事件,wpf,Wpf,我在datatemplate内的两个StackPanel上都添加了一个KeyUp事件,但它不会触发。使用PreviewKeyUp事件。那总是着火 您可能还想尝试PreviewKeyDown 不会触发KeyUp事件,因为它是具有焦点的ListViewItem。改为订阅ItemContainerStyle中的KeyUp事件 <ListView SelectionChanged="RecordSelected" Height="134" HorizontalAlignme

我在datatemplate内的两个StackPanel上都添加了一个KeyUp事件,但它不会触发。

使用PreviewKeyUp事件。那总是着火


您可能还想尝试PreviewKeyDown

不会触发
KeyUp
事件,因为它是具有焦点的
ListViewItem
。改为订阅
ItemContainerStyle
中的
KeyUp
事件

            <ListView SelectionChanged="RecordSelected" Height="134" HorizontalAlignment="Left" Margin="10,10,0,0" Name="processList" VerticalAlignment="Top" Width="207">
                <ListView.ItemTemplate>
                    <DataTemplate x:Name="record" DataType="{x:Type local:MyApp}">
                        <StackPanel Name="cell" Orientation="Vertical" KeyUp="cell_KeyUp">
                            <StackPanel KeyUp="cell_KeyUp" GotFocus="RecordSelected" KeyDown="RecordSelected" MouseDown="RecordSelected" Orientation="Horizontal" Tag="{Binding MyApp}">
                                <CheckBox BorderThickness="1" IsChecked="{Binding IsChecked}" Margin="3,3,3,3" Name="checkbox" />
                                <TextBlock GotFocus="RecordSelected" HorizontalAlignment="Left" KeyDown="RecordSelected" Margin="3,0,0,3" Name="displayname" Text="{Binding DisplayName}" VerticalAlignment="Center" Width="200" />
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>


在事件处理程序中,发送者将成为焦点
ListViewItem
。将它的
内容
投射到源代码中,并切换
IsChecked
。如果您的源类实现了
INotifyPropertyChanged
,这将起作用。否则,您可以搜索可视树以查找
列表视图项的子
复选框

它不起作用。我想在用户点击spacebar.Hrm时选中/取消选中该复选框。有没有什么重要的事件发生在它身上?这可能是一个焦点问题。我刚检查过,我的PreviewKeyUp正在启动。我想看看它是否有焦点,因为我认为如果有,它应该发射。
<ListView ...>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <EventSetter Event="KeyUp" Handler="cell_KeyUp"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.ItemTemplate>
        <!-- ... -->
    </ListView.ItemTemplate>
</ListView>