2016-04-14 1 views
0

Ich versuche, meine eigene Logik bei der Auswahl von Listenelementen Verhalten zu implementieren. Ich möchte eine Option programmatisch nach Position hervorheben. I eine Arbeitslösung gefunden:ListView-Element programmgesteuert in Universal Windows 10 hervorheben

myListView.SelectedIndex = position;

Diese Methode wird auf dieser Liste Punkt „einen virtuellen Klick tun“, ich brauche nur programmatisch das Listenelement evidentiate, aber klicken Sie nicht.

Meine Listview-Implementierung in XAML:

<ListView 
    x:Name="myListView" 
    SelectionChanged="onmyListViewItemClick" 
    SelectionMode="Single"> 

    <ListView.ItemTemplate> 
     <DataTemplate> 
      <--here I have 2 textBoxes and one image--> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

Sie möchten ausgewähltes Element hervorheben? myListView.SelectedIndex = position-> Dies wählt ein bestimmtes Element aus – Archana

+0

Sie können den visuellen Status für das bestimmte ListView-Objekt, das Sie hervorheben möchten, auf "Ausgewählt" setzen. – Archana

+0

Ich erwähnte diese Methode, aber es löst 'onListItemClick' aus, wenn ich es verwende, ich muss nur den visuellen Zustand ohne implizite Auswahl ändern –

Antwort

1

nur für die Dinge Aufräumen:

ItemClick Tritt ein, wenn ein Element in der Listenansicht eine Interaktion empfängt, und die IsItemClickEnabled Eigenschaft ist wahr. (Von ListViewBase geerbt)

SelectionChanged Tritt auf, wenn sich das aktuell ausgewählte Element ändert. (Geerbt von Selector)

Also in Ihrem Fall, dass Sie ItemClick="onmyListViewItemClick" in XAML verwenden sollten, und halten mit myListView.SelectedIndex = position; vier Ihre Bedürfnisse

So XAML Listview shuold sein:

<ListView 
x:Name="myListView" 
IsItemClickEnabled="true" 
ItemClick="onmyListViewItemClick" 
SelectionMode="Single"> 

<ListView.ItemTemplate> 
    <DataTemplate> 
     <--here I have 2 textBoxes and one image--> 
    </DataTemplate> 
</ListView.ItemTemplate> 

und um ein ausgelöstes Element in onmyListViewItemClick zu erhalten:

private void onmyListViewItemClick(object sender, ItemClickEventArgs e) { 
     var selectedOption = (YourObjectElement)e.ClickedItem; 
     //use your cliked obj data 
} 
0

Um das markierte Element zu ändern, ohne das Ereignis SelectionChanged auszulösen, müssen Sie Ihren eigenen visuellen Status für das ListViewItem und die IsSelected-Eigenschaft implementieren und SelectedIndex dürfen nicht geändert werden.

Um die Auswahlzustände zu implementieren, erstellen Sie zuerst eine UserControl, die innerhalb der DataTemplate verwendet werden soll. Erstellen Sie eine neue Eigenschaft bool IsSelected für Ihr Modell, in der Benutzersteuerelement deklarieren Sie die VisualState s Ihrer Zelle, und es ändert den Zustand mit VisualStateManager immer wenn die IsSelected Eigenschaft des DataContext (Ihr Modell) des Benutzersteuerelements geändert.