2008-11-03 14 views
7

Es fácil vincular algo al SelectedIndex del ListBox, pero quiero que todos los elementos del ListBox puedan enlazarse a su índice en la lista.WPF ListBox se une al índice del elemento

puede sonar raro, así que esto es lo que estoy tratando de hacer:

<DataTemplate x:Key="ScenarioItemTemplate"> 
<Border 
    Margin="8,2,8,2" 
    Background="#FF3C3B3B" 
    BorderBrush="#FF797878" 
    BorderThickness="2" 
    CornerRadius="5"> 
    <DockPanel> 
     <DockPanel DockPanel.Dock="Top" Margin="0,2,0,0"> 
      <Label HorizontalAlignment="Left" 
        DockPanel.Dock="Left" 
        FontWeight="Heavy" 
        Foreground="White" 
        Content="{Binding Path=Position}" 
        MinWidth="50"/> 

      <Label 
        Content="{Binding Path=Name}" 
        DockPanel.Dock="Left" 
        FontWeight="Heavy" 
        Foreground="white"/> 
      <Label 
        Content="{Binding Path=Header}" 
        Foreground="white" 
        DockPanel.Dock="Left"/> 

      <TextBlock HorizontalAlignment="Right" 
         Background="#FF3C3B3B" 
         DockPanel.Dock="Left" Foreground="White" FontWeight="Heavy"> 
       <Hyperlink Click="CloseHyperlink_Click" Tag="">X</Hyperlink> 
      </TextBlock> 

quiero obligar a la propiedad Tag del hipervínculo al índice del elemento en cuestión. Para que cuando el usuario haga clic en el hipervínculo, pueda determinar qué elemento causó el evento utilizando la propiedad TAG de ese hipervínculo.

var hyperlink = (Hyperlink)sender; 
var index = Convert.ToInt32(hyperlink.Tag); 

Sugerencias?

Respuesta

5

Hasta donde yo sé, no hay realmente una propiedad que indique el índice de su artículo. Si usted tiene acceso a la lista original de elementos a los que se une el cuadro de lista, se puede acceder al DataContext de su hipervínculo para determinar el índice de su artículo, así:

var hyperlink = (Hyperlink)sender; 
var item = (SourceType)hyperlink.DataContext; 
int index = sourceList.IndexOf(item); 

Alternativamente, se podría llamar ItemsControl. ContainerFromElement en el hipervínculo para obtener el ListBoxItem asociado con el hipervínculo y luego encontrar la posición del ListBoxItem en el ListBox, pero realmente no obtiene nada que usted no tenga.

+0

Bueno, en realidad solo tener el elemento podría ser más que suficiente, porque quiero hacerlo es eliminarlo. ¡Thnx! – TimothyP

Cuestiones relacionadas