none
ListView selected index ist nur beim zweiten clicken richtig RRS feed

  • Frage

  • Hallo

    ich habe eine Listview. Wenn ich ein Item anklicke dann wird mir immer erst der richtige index beim zweiten mal klicken auf das item angezeigt.

    Gibt es eine Möglichkeit das man sofort den richtigen index bekommt?

    So mache ich das im Moment:

     Private Sub LB1_PreviewMouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles LB1.PreviewMouseDown
            Debug.WriteLine(LB1.SelectedIndex.ToString)
     End Sub
    

     

    Ein anderes Event habe ich nicht gefunden was auf ein Mausklick reagiert.

     

    Dienstag, 6. April 2010 17:52

Alle Antworten

  • Ok habe ich endlich gefunden. Jetzt geht es. Jetzt habe ich noch ein Anzeigeproblem. In einem Timer lasse ich ein Item in Abhängigkeit des Itemindex aktualisieren.

    Wenn ich jetzt den Index mittels dem Mouseclick änder, dann wird mir das neue Item auch aktualisiert allerdings bleibt das alte selektierte Item auch noch selektiert.

    Somit kann ich nacheinader auf alle sitems klicken. dann sind alle items angeklickt.

    Schalte ich den timer aus und lass nichts aktualisieren dann ist immer nur ein item selektiert.

    Woran liegt denn das ? Irgend jemand eine Idee?

    <ListView x:Name="LB1" Background="Black" ItemContainerStyle="{StaticResource RedGlowItemContainer}" BorderThickness="10" BorderBrush="BlueViolet" Style="{DynamicResource ListViewStyle1}" SelectionMode="Single">
                    <ListView.ItemTemplate>
                        <DataTemplate>
                            <StackPanel>
                                <Label Content="{Binding Path=Feld1}" Foreground="OrangeRed" FontSize="16" HorizontalAlignment="Left" VerticalAlignment="Top" Padding="1" Width="100"/>
                            <Image x:Name="bild1" Width="50" Source="{Binding Path=Feld2}"/>
                        </StackPanel>
                        </DataTemplate>
          </ListView.ItemTemplate>
    </ListView>
     Private Sub LB1_PreviewMouseDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles LB1.PreviewMouseDown
            Timer1.Start()
       
            pos = 1
    
            Dim clickedToDoItem As ItemClass
            Dim dep As DependencyObject = CType(e.OriginalSource, DependencyObject)
            Do While dep IsNot Nothing AndAlso Not TypeOf (dep) Is ListViewItem
                dep = VisualTreeHelper.GetParent(dep)
            Loop
            If dep Is Nothing Then
                Return
            Else
                clickedToDoItem = CType(Me.LB1.ItemContainerGenerator.ItemFromContainer(dep), ItemClass)
                itemindex = Me.LB1.ItemContainerGenerator.IndexFromContainer(dep)
    
            End If
                temp = clickedToDoItem.Feld1
               
    
    
        End Sub
    
        Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
            If pos < 10 Then
                      LB1.Items.Item(itemindex) = t
                pos += 1
            Else
                Timer1.Stop()
                Timer2.Start()
            End If
        End Sub
    Dienstag, 6. April 2010 19:35