2017-02-13 3 views
0

У меня есть ListView, и я хочу, чтобы ListView выбирался при нажатии мыши. (Как свойство ClickMode кнопок). есть ли какое-нибудь решение?set SelectionChanged в ListView Clickmode = "нажато" в uwp

+0

Что вы пробовали и где возникли проблемы? Вы пробовали свойство * SelectionMode * в * ListView *? – Romasz

+0

@Romasz Я хочу, чтобы ListView был выбран, когда мышь нажата, и у нас есть это для кнопок с свойством ClickMode, но здесь у нас нет этого свойства в ListView. Я попытался поместить кнопку в шаблон ListView и изменить его свойство ClickMode, но я не смог получить доступ к объекту, который щелкнут в ListView (я думаю, что я должен сделать что-то подобное)! и вы сказали свойство SelectionMode, я думаю, это для выбора элементов одного или нескольких и т. д., а не для ClickMode! – mohammadrezamajd

+0

Если вы включите SelectionMode as Multiple, вы сможете выбрать элементы, щелкнув мышью/касанием элементов. Вам нужно будет лучше описать ваш вопрос. – Romasz

ответ

0

Я пытался кнопку, чтобы поместить в шаблон ListView и изменить его свойство ClickMode

SelectionChanged срабатывает, когда мышь выпущена, который по умолчанию. Похоже, мы не можем его изменить. Таким образом, мы можем поместить кнопку в шаблон объекта ListView и изменить его режим кликов как то, о чем вы думали, или зарегистрировать событие PointerPressed для контейнера внутри шаблона элемента, который будет запущен, когда мышь нажата не отпущена.

, но я не мог получить доступ к объекту, который щелкнул в ListView

Чтобы получить доступ к какой элемент кликнули вы все еще можете использовать свойство как SelectedItem из ListView, чтобы получить выбранный элемент. Например:

XAML код позади

<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> 

Код:

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