0

ここで奇妙な問題が発生しました。標準テンプレートに基づいて ListBox のテンプレートを作成しました (つまり、以下に示す以外は何も変更していません)。

ScrollViewer (標準の ListBox テンプレートの一部) を左右にスクロールできるように、テンプレートの横にいくつかのボタンを追加しようとしています。問題は、ScrollBar.PageLeftCommand OR ScrollBar.PageRightCommand のみを認識することです...両方に応答することはできません。

つまり、右のボタンをクリックすると右にページが表示されますが、左のボタンをクリックしても何も起こりません。XAML でのボタンの順序に応じて、どのコマンドが機能し、どのコマンドが機能しないかが決まります (コマンドは、XAML で定義された最後のボタンに対して機能するようです)。

<ControlTemplate TargetType="{x:Type s:SurfaceListBox}">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="0.137*"/>
            <ColumnDefinition Width="0.726*"/>
            <ColumnDefinition Width="0.137*"/>
        </Grid.ColumnDefinitions>
        <Border x:Name="Border"  Grid.ColumnSpan="1" Grid.Column="1">
            <s:SurfaceScrollViewer x:Name="scrollViewer" >
                <ItemsPresenter />
            </s:SurfaceScrollViewer>
        </Border>
        <s:SurfaceButton x:Name="rightScroll" Content="&gt;" Command="ScrollBar.PageRightCommand" CommandTarget="{Binding ElementName=scrollViewer}" Grid.Column="2" />
        <s:SurfaceButton x:Name="leftScroll" Content="&lt;" Command="ScrollBar.PageLeftCommand" CommandTarget="{Binding ElementName=scrollViewer}"/>
    </Grid>
</ControlTemplate>

(はい、これは Surface クラスを使用していますが、通常のクラスで試してみたところ、同じ動作が得られました..)

Snoopで実行しているのを見てきましたが、コマンドについて何も役に立たないことを教えてくれます.Snoopによれば、両方のコマンドが正常に処理されます!

4

2 に答える 2

2

標準の WPF コントロールは、SurfaceScrollViewer のすべてのイベントをサポートしているわけではありませんが、SurfaceScrollViewer にパッケージされている他のコントロールは、Click などのいくつかのイベントをサポートしています。

問題は、SurfaceScrollViewer がスクロールバーでのタッチ入力だけでなく、コンテンツ自体へのタッチ入力も受け入れることです。

于 2011-03-20T01:13:32.377 に答える
0

はい、嘘をつきました。SurfaceScrollViewerを通常のに置き換えようとしませんでしたScrollViewer

私がそうするとき、それはうまくいくように見えます。したがって、他に提案がない限り、SurfaceScrollViewerには少なくとも2つのバグがあるようです(2つ目ScrollBarは、通常のコマンドとは異なり、コマンドが非表示になっているときにコマンドに応答しないことですScrollViewer)。

再び失敗した。

:-(

于 2010-09-09T00:38:50.257 に答える