我的ItemTemplate
ListBoxItem
包含Slider
。 UI应该在触摸屏上操作。但是,滑块不起作用 - 无法拖动滑块。
问题可以这样证明:
<StackPanel>
<Slider Height="40" Width="300" Margin="20,10,20,10"/>
<ListBox>
<Slider Height="40" Width="300" Margin="20,10,20,10"/>
</ListBox>
</StackPanel>
ListBox
内的滑块无法通过触摸拖动(尽管它适用于鼠标或键盘输入)。 ListBox
外的另一个滑块工作正常(鼠标,键盘,触摸)。
需要做些什么才能“启用”ListBox
内的滑块进行触摸输入?
答案 0 :(得分:1)
Slider \ ScrollViewer in a touch interface not working properly的接受答案也会有所帮助。
这可能是由于ListBox
和ItemsControl
内部包含ScrollViewer
。显然这个ScrollViewer
对于拖动ListBox
本身很重要(所以我无法摆脱它)。但是,ScrollViewer
可以被其他帖子的CustomThumb类欺骗。
替换样式中的Thumb
非常简单:
<Window
...
xmlns:l="clr-namespace:WpfApplication1"
...>
<Window.Resources>
...
<Style x:Key="SliderStyle1" TargetType="{x:Type Slider}">
...
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Slider}">
...
<Track x:Name="PART_Track" Grid.Row="1">
<Track.Thumb>
<l:CustomThumb x:Name="Thumb" .../>
</Track.Thumb>
</Track>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
您可以通过编辑Expression Blend创建的样式来完成此操作。