2010-09-09 65 views
0

這裏有一個奇怪的問題。我已經爲基於標準模板的ListBox創建了一個模板(即,除了我在下面指出的內容之外,我沒有改變任何內容)。爲什麼我的一個ScrollViewer命令不能在ListBox模板中工作?

我想向模板的一側添加幾個按鈕,以便我可以向左和向右滾動ScrollViewer(這是標準ListBox模板的一部分)。 問題是,它只識別ScrollBar.PageLeftCommand或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> 

(是的,這是使用面類,但我與常年偏多嘗試過了,我得到了相同的行爲。)

我不得不看看它與史努比運行,但它告訴我沒有什麼有用的命令 - 根據Snoop這兩個命令處理成功!

+0

我相信這是WPF中的一個錯誤 – Schneider 2011-03-21 02:06:42

回答

0

好的,我撒謊了。我沒有試着用正常的ScrollViewer替換SurfaceScrollViewer

當我這樣做似乎工作。所以,除非任何人有任何其他建議,看起來SurfaceScrollViewer至少有兩個錯誤(我發現第二個錯誤是ScrollBar當它們被隱藏時不會響應命令,而不像常規的ScrollViewer)。

再次挫傷。

:-(

2

標準WPF控件不支持所有與SurfaceScrollViewer的事件,但是,也有與支持一些活動,如單擊SurfaceScrollViewer包裝等控制。

問題是SurfaceScrollViewer不僅可以接受滾動條上的觸摸輸入,還可以接收內容本身。

相關問題