2

このトピックに関する十数以上のSOの質問と記事をすでに読んでいます。何も機能していないようです。これが私の単純なシステムです。オブジェクトをホストするWindowがあるメイン。私のオブジェクトの1つに次のものがあります:FramePagePage

<Page.Resources>
    <RoutedUICommand x:Key="PreviousRecordCommand" Text="Previous Record" />
    <RoutedUICommand x:Key="NextRecordCommand" Text="Previous Record" />

    <CollectionViewSource x:Key="cvsAllOrders" Source="{Binding AllSalesOrders}" />
</Page.Resources>

<Page.CommandBindings>
    <CommandBinding Command="{StaticResource PreviousRecordCommand}" Executed="PreviousRecordCommand_Executed" CanExecute="PreviousRecordCommandBinding_CanExecute" />
    <CommandBinding Command="{StaticResource NextRecordCommand}" Executed="NextRecordCommand_Executed" CanExecute="NextRecordCommandBinding_CanExecute" />
</Page.CommandBindings>

<Page.InputBindings>
    <KeyBinding Command="{StaticResource PreviousRecordCommand}" Gesture="CTRL+LEFT" />
    <KeyBinding Command="{StaticResource NextRecordCommand}" Gesture="CTRL+RIGHT" />
</Page.InputBindings>

コードビハインドには次のものがあります。

Private Sub PreviousRecordCommand_Executed(sender As System.Object, e As System.Windows.Input.ExecutedRoutedEventArgs)
    Dim CurView = DirectCast(Me.Resources("cvsAllOrders"), CollectionViewSource).View
    CurView.MoveCurrentToPrevious()
    If CurView.IsCurrentBeforeFirst Then CurView.MoveCurrentToFirst()
End Sub

Private Sub NextRecordCommand_Executed(sender As System.Object, e As System.Windows.Input.ExecutedRoutedEventArgs)
    Dim CurView = DirectCast(Me.Resources("cvsAllOrders"), CollectionViewSource).View
    CurView.MoveCurrentToNext()
    If CurView.IsCurrentAfterLast Then CurView.MoveCurrentToLast()
End Sub

Private Sub PreviousRecordCommandBinding_CanExecute(sender As System.Object, e As System.Windows.Input.CanExecuteRoutedEventArgs)
    Dim MyView = DirectCast(Me.Resources("cvsAllOrders"), CollectionViewSource).View
    e.CanExecute = (MyView IsNot Nothing) AndAlso (DirectCast(Me.Resources("cvsAllOrders"), CollectionViewSource).View.CurrentPosition > 0)
End Sub

Private Sub NextRecordCommandBinding_CanExecute(sender As System.Object, e As System.Windows.Input.CanExecuteRoutedEventArgs)
    Dim MyView = DirectCast(Me.Resources("cvsAllOrders"), CollectionViewSource).View
    e.CanExecute = (MyView IsNot Nothing) AndAlso (DirectCast(Me.Resources("cvsAllOrders"), CollectionViewSource).View.CurrentPosition < DirectCast(Me.Resources("cvsAllOrders"), CollectionViewSource).View.Cast(Of SalesOrderEntryModel.SalesOrder).Count() - 1)
End Sub

私はこれを機能させることができません。コード ビハインドでもコマンドを宣言しようとしました。違いはありません。参考までに、私は何十ものテキストボックスやその他のコントロールを持っておりPage、現在のフォーカスがどこにあってもこれらのキーが機能する必要があります.

どんな助けでも大歓迎です。

4

0 に答える 0