在ListView中设置SelectionChanged Clickmode ="按下"在uwp

时间:2017-02-13 20:53:49

标签: c# uwp uwp-xaml

我有一个ListView,我希望在按下鼠标时选择ListView。 (像Buttons的ClickMode属性一样)。有什么解决方案吗?

1 个答案:

答案 0 :(得分:0)

  

我尝试将按钮放在ListView模板中并更改其ClickMode属性

默认情况下,鼠标释放时会触发SelectionChanged。好像我们无法改变它。因此,我们可以将按钮放在ListView项模板中,并根据您的想法更改其单击模式,或者为项目模板中的容器注册PointerPressed事件,这将在未按下鼠标时触发。< / p>

  

但我无法访问在ListView中单击的对象

要访问点击的项目,您仍然可以使用ListView <ListView Name="CategoryLIstView" Grid.Row="1" ItemsSource="{x:Bind categories}" HorizontalAlignment="Center" Margin="10" VerticalAlignment="Top" IsItemClickEnabled="True" SelectionChanged="CategoryLIstView_SelectionChanged" ItemClick="CategoryLIstView_ItemClick" PointerPressed="CategoryLIstView_PointerPressed"> <ListView.ItemTemplate> <DataTemplate x:DataType="local:Category"> <StackPanel Margin="0" PointerPressed="StackPanel_PointerPressed"> <StackPanel Orientation="Vertical" > <TextBlock Text="{x:Bind Name}" Foreground="Blue" FontWeight="Bold" FontFamily="Yu Gothic" FontSize="17"/> </StackPanel> </StackPanel> </DataTemplate> </ListView.ItemTemplate> </ListView> 之类的属性来获取所选项目。例如:

XAML代码

  private async void StackPanel_PointerPressed(object sender, PointerRoutedEventArgs e)
  {
      await new Windows.UI.Popups.MessageDialog("point press").ShowAsync();
      System.Diagnostics.Debug.WriteLine(CategoryLIstView.SelectedIndex); 
  }

代码背后:

C# 7.0