這裏有一個奇怪的問題。我已經爲基於標準模板的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=">" Command="ScrollBar.PageRightCommand" CommandTarget="{Binding ElementName=scrollViewer}" Grid.Column="2" />
<s:SurfaceButton x:Name="leftScroll" Content="<" Command="ScrollBar.PageLeftCommand" CommandTarget="{Binding ElementName=scrollViewer}"/>
</Grid>
</ControlTemplate>
(是的,這是使用面類,但我與常年偏多嘗試過了,我得到了相同的行爲。)
我不得不看看它與史努比運行,但它告訴我沒有什麼有用的命令 - 根據Snoop這兩個命令處理成功!
我相信這是WPF中的一個錯誤 – Schneider 2011-03-21 02:06:42