У меня есть ItemsControl
, вложенный внутри ListBox.ItemTemplate
. Верх ListBox
привязан к данным на ObservableCollection
. Коллекция - это Покупка, содержащая формулы, которые, в свою очередь, содержат отдельные продукты.Найти указатель элемента в ItemsControl, вложенный внутри LixtBox.Item
Теперь, если щелкнут индивидуальный продукт внутри формулы, я хотел бы, чтобы он был удален из его формулы. Таким образом, в обработчик событий, я должен быть в состоянии определить позицию продукта с помощью:
var index = [theItemsControl].ItemContainerGenerator.IndexFromContainer((sender as Button).TemplatedParent);
Однако, на мой обработчик событий, я не знаю, как, как найти содержащий ItemsControl
. Я не могу назвать его фиксированным именем, поскольку он сам является частью ListBox.ItemTemplate
, то есть будет несколько экземпляров.
Это мой XAML, лишен какой-либо стиль, связанные вещи:
<ListBox x:Name="lbBasketFormulae" ItemsSource="{Binding Path=Purchase.Formulae}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Vertical">
<!-- Formula Title -->
<StackPanel Orientation="Horizontal">
<Label Width="30" Content="{Binding Path=Quantity}"></Label>
<Label Content="{Binding Path=FormulaType, Converter={StaticResource formulaTypeToNameConverter}}"></Label>
</StackPanel>
<!-- Formula Products -->
<ItemsControl ItemsSource="{Binding Path=Products}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button x:Name="bnBasketFormulaProduct" HorizontalContentAlignment="Left" Content="{Binding Path=Name}" Click="bnBasketFormulaProduct_Click">
<Button.Template>
<ControlTemplate TargetType="Button">
<TextBlock Text="{TemplateBinding Content}" />
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Итак, мой вопрос: Как я могу найти положение моего продукта внутри моей формулы и положение этой формулы внутри купите, чтобы я мог удалить его с ObservableCollection
? (Изменение коллекции затем автоматически отражается на пользовательском интерфейсе, поскольку оно привязано к данным.)
Большое спасибо за любые советы или подсказки!
С уважением,
Chris
Спасибо. Используя этот метод, я смог получить доступ к файлу данных родителя, который в конечном итоге стал еще более полезным и надежным, чем просто индекс, который я хотел в первую очередь. – Christophe