событие keyup в табличной панели данных списка wpf - PullRequest
2 голосов
/ 05 октября 2011
            <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>

Я добавил событие KeyUp на обе панели стека внутри таблицы данных, но оно не сработало.

Ответы [ 2 ]

4 голосов
/ 05 октября 2011

Событие KeyUp не сработает, поскольку фокус находится на ListViewItem.Подпишитесь на событие KeyUp в ItemContainerStyle вместо

<ListView ...>
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <EventSetter Event="KeyUp" Handler="cell_KeyUp"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.ItemTemplate>
        <!-- ... -->
    </ListView.ItemTemplate>
</ListView>

В обработчике события отправителем будет фокус ListViewItem.Примените Content этого к своему источнику и переключите IsChecked.Это будет работать, если ваш исходный класс реализует INotifyPropertyChanged.В противном случае вы можете выполнить поиск по дереву визуалов, чтобы найти дочернего элемента CheckBox из ListViewItem

0 голосов
/ 05 октября 2011

Используйте событие PreviewKeyUp. Это всегда срабатывает.

Вы также можете попробовать PreviewKeyDown.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...