如何避免ListView项失去焦点?

时间:2018-02-28 15:52:55

标签: xaml uwp uwp-xaml

我有一个UserControl控制ListView的滚动,有点像自定义ScrollBar。问题发生在:

  1. ListView中的项目具有键盘焦点(即焦点视觉效果为 设置项目)
  2. 我抓住并拖动我的控件
  3. 在控件之外发布(例如,通过ListView)
  4. 结果是ListView项目失去焦点的方式与我刚刚在ListView外部单击时的方式相同。这不是常规ScrollBar行为的方式,事实上如果我在我的控件中有一个Button,单击它并在控件之外发布,Button会以某种方式阻止release事件并且ListView项保持其焦点。

    我已尝试在UserControl的PointerPressed处理程序中设置CapturePointer,但该项目仍然失去焦点(尽管未调用ListView的PointerReleased处理程序)。

    用户控件:

    <Grid x:Name="RootGrid" Background="AliceBlue">
        <Button IsTabStop="False">OKOK</Button>
    </Grid>
    

    的MainPage:

    <Grid x:Name="RootGrid" Background="Gray">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
    
        <ListView>
            <TextBlock Text="ListViewItem 1" />
            <TextBlock Text="ListViewItem 2" />
            <TextBlock Text="ListViewItem 3" />
        </ListView>
    
        <local:MyControl Grid.Row="1" />
    </Grid>
    

    所以在上面的例子中:

    1. 按Tab键,以便ListView中的项目标有黑色焦点矩形
    2. 用鼠标按蓝色区域,拖动到灰色区域并释放
    3. 注意黑色焦点矩形是如何消失的。重复上述步骤,但按下按钮而不是按蓝色区域,并注意黑色焦点矩形不会消失。从蓝色区域拖动时我想要从按钮拖动时的相同行为。

0 个答案:

没有答案