这里遇到了一个奇怪的问题。我已经基于标准模板为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>
(是的,这是使用Surface类,但我已尝试使用普通类,我得到相同的行为..)
我已经看过它与Snoop一起运行,但它告诉我没有任何关于命令的用处 - 根据Snoop,两个命令都已成功处理!
答案 0 :(得分:2)
标准WPF控件不支持SurfaceScrollViewer的所有事件,但是,SurfaceScrollViewer还包含其他支持某些事件的控件,如Click。
问题是SurfaceScrollViewer不仅接受滚动条上的触摸输入,还接受内容本身。
答案 1 :(得分:0)
好的,我撒了谎。我没有尝试将SurfaceScrollViewer
替换为普通ScrollViewer
。
当我这样做时,似乎有效。因此,除非有人提出任何其他建议,否则SurfaceScrollViewer
至少会出现两个错误(我发现第二个是ScrollBar
在隐藏隐藏命令时不响应命令ScrollViewer
})。
再次挫败。
: - (