通过触摸操作ListBox内的滑块

时间:2014-06-30 15:35:18

标签: wpf listbox touch

我的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内的滑块进行触摸输入?

1 个答案:

答案 0 :(得分:1)

Slider \ ScrollViewer in a touch interface not working properly的接受答案也会有所帮助。

这可能是由于ListBoxItemsControl内部包含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创建的样式来完成此操作。

相关问题