Como: Localizar o índice de um elemento
Este exemplo mostra com encontrar o índice de um elemento recém-adicionado usando o método IndexOf.
Exemplo
O seguinte exemplo define um elemento DockPanel hospedeiro em Extensible Application Markup Language (XAML) e usa um Button para invocar o método FindIndex personalizado.
<DockPanel Name="ParentElement">
<TextBlock DockPanel.Dock="Top" Name="TxtDisplay"></TextBlock>
<Button DockPanel.Dock="Top" Click="FindIndex">What is the Index Number
of the Element Just Added?</Button>
<DockPanel Name="MainDisplayPanel">
<TextBlock DockPanel.Dock="Top">Text 1</TextBlock>
<TextBlock DockPanel.Dock="Top">Text 2</TextBlock>
</DockPanel>
</DockPanel>
Os eventos relacionados são tratados usando um código por trás. A posição do índice de um elemento é reportada de volta como uma string de texto.
Dim c_counter as Integer = 0
Private Sub FindIndex(ByVal sender As Object, ByVal args As RoutedEventArgs)
Try
Dim newText As TextBlock = New TextBlock()
c_counter = c_counter + 1
' Add this element to the UIElementCollection of the DockPanel element.
MainDisplayPanel.Children.Add(newText)
' Add a text node under the Text element. This text is displayed.
newText.Text = "New element #" & CStr(c_counter)
DockPanel.SetDock(newText, Dock.Top)
' Display the Index number of the new element.
TxtDisplay.Text = "The Index of the new element is " & MainDisplayPanel.Children.IndexOf(newText)
Catch ex As System.Exception
System.Windows.MessageBox.Show(ex.Message)
End Try
End Sub
private int c_counter = 0;
void FindIndex(object sender, RoutedEventArgs e)
{
c_counter+=1;
// Create a new Text element.
TextBlock newText = new TextBlock();
// Add this element to the UIElementCollection of the DockPanel element.
MainDisplayPanel.Children.Add(newText);
// Add a text node under the Text element. This text is displayed.
newText.Text = "New element #" + c_counter;
DockPanel.SetDock(newText,Dock.Top);
// Display the Index number of the new element.
TxtDisplay.Text = "The Index of the new element is " + MainDisplayPanel.Children.IndexOf(newText);
}