問題
このコードの一部を使用して、を押したときにListBoxItem
を含むのプロパティ (より具体的には、そのインデックス) にアクセスしたいと考えています。の親 ( である)Button
を取得し、それからビジュアル ツリーを上っていく必要があると考えましたが、非常に重要な 2 つのことを知りません。それが本当に私の問題を解決するかどうかでもありません。Button
StackPanel
TemplatedParent
XAML
<ListBox x:Name="myListBox" Foreground="Black" HorizontalAlignment="Left" Height="101" Margin="237,312,0,0" VerticalAlignment="Top" Width="420">
<ListBox.ItemTemplate>
<!--src is the alias I gave to the xmlns that gives me access to the assembly on which I'm working-->
<DataTemplate DataType="{x:Type src:Items}">
<DataTemplate.Resources>
<Style TargetType="Label">
<Setter Property="Foreground" Value="Black"/>
<Setter Property="FontFamily" Value="Tahoma"/>
</Style>
</DataTemplate.Resources>
<StackPanel Orientation="Horizontal">
<!--Property1 to Property3 are defined in the Items type-->
<Label Content="{Binding Path=Property1}" Width="30" MaxWidth="30"/>
<Label Content="{Binding Path=Property2}" Width="100" MaxWidth="100"/>
<Label Content="{Binding Path=Property3}" Width="250" MaxWidth="250"/>
<Button Content="X" Width="30" MaxWidth="30" Click="RemoveItemFromList"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Cシャープ
正常に動作する私のコードの一部
//Somewhere in my code
ObservableCollection<Items> myStuff = createListOfItems();
myListBox.DataContext = myStuff;
myListBox.setBinding(ItemsControl.ItemsSourceProperty, new Binding());
私が答えかもしれないと思ったもの(うまくいかない)
private void RemoveItemFromList(object sender, RoutedEventArgs e)
{
int index = (((sender as Button).Parent as StackPanel).TemplatedParent as ListBoxItem).IsSelected = true;
myStuff.RemoveAt(myListBox.SelectedIndex);
}