c# - Encontrar Listbox Index of ListBoxItem(ItemsTemplate para especificar Visual Content)
wpf combobox binding (1)
Puede vincular AlternationCount
al Script.Count
luego agregar AlternationIndex
desde ItemsControl
(ListBox) a la propiedad Textbox
Tag
para que pueda acceder desde su controlador de eventos GotFocus
.
Ejemplo:
<ListBox Name="ScriptEditor" Margin="10" Height="291" ItemsSource="{Binding Script}" AlternationCount="{Binding Script.Count}" >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding ., Mode=OneWay}" GotFocus="ScriptEditor_GotFocus"
Tag="{Binding Path=(ItemsControl.AlternationIndex), Mode=OneWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBoxItem}}}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
private void ScriptEditor_GotFocus(object sender, RoutedEventArgs e)
{
int index = (int)(sender as TextBox).Tag;
}
¿Cómo se encuentra el índice de un ListBoxItem si se establece dentro de una DataTemplate como un control de cuadro de texto? Aquí está el WPF:
<ListBox Name="ScriptEditor" Margin="10" Height="291" ItemsSource="{Binding Path=Script}" SelectionChanged="ScriptEditor_SelectionChanged_1" >
<ListBox.ItemTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=Command}"PreviewMouseDoubleClick="Command_DoubleClick" GotFocus="ScriptEditor_GotFocus" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Cuando obtengo el foco del cuadro de texto (el texto está ligado a una colección observable), no puedo simplemente usar el Evento SelectionChanged en el ListBox. Me gustaría saber cómo puedo determinar el índice del cuadro de texto en el que me he enfocado.
Gracias