Как получить свойство из элемента списка выбранного элемента управления ListBox? C#

Как заголовок сказал, что я хочу получить значение свойства из выбранного элемента списка по нажатию кнопки

 <ListBox x:Name="IconListbox" Background="{x:Null}" BorderBrush="Black">
        <ListBox.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ListBox.ItemsPanel>
        <ListBoxItem x:Name="defaultIcon">
            <Grid Background="Black">
                <Border BorderBrush="#FF1EF3F3" BorderThickness="2">
                    <Image x:Name="defaultIconImage" Width="50" Height="50" Source="icon.png"/>
                </Border>
            </Grid>
        </ListBoxItem>
        <ListBoxItem>
            <Grid Background="Black">
                <Border BorderBrush="#FF1EF3F3" BorderThickness="2">
                    <Image x:Name="secondIconImage" Width="50" Height="50" Source="SecondIcon.png"/>
                </Border>
            </Grid>
        </ListBoxItem>
    </ListBox>

Например, если я нажму кнопку, она должна вернуть источник изображения текущего выбранного элемента. Поэтому, если ListboxItem defaultIcon выбран, он должен вернуть defaulticon.png. Как я могу это сделать?

Редактировать:

Может быть, я принимаю неправильный подход, пытаясь использовать список. Я новичок в коде Xaml, и я постараюсь лучше объяснить, что я хочу в результате.

Вот картина, которую я буду использовать, чтобы попытаться объяснить:

Так что я хочу, чтобы при выборе 1 мне нужно было вернуть источник изображения голубого пламени, когда я нажимаю кнопку сохранения

когда выбрано 2, мне нужно вернуть источник синего изображения в фейсбуке, когда я нажимаю кнопку сохранения

2 ответа

Решение

Вы можете найти изображение внутри SelectedItem как код ниже

        var selectedItem = IconListbox.SelectedItem as ListBoxItem;
        if (selectedItem != null)
        {
            var image = selectedItem.GetChildOfType<Image>();
            if (image != null)
            {
                var source = image.Source;
            }
        }

метод расширения для получения дочернего элемента определенного типа

     public static T GetChildOfType<T>(this DependencyObject depObj) where T : DependencyObject
        {
            if (depObj == null) return null;

            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++)
            {
                var child = VisualTreeHelper.GetChild(depObj, i);

                var result = (child as T) ?? GetChildOfType<T>(child);
                if (result != null) return result;
            }
            return null;
        }

IconListbox.SelectedItem и затем приведите его или создайте новый объект из них.

пример

Image i = (Image)IconListbox.SelectedItem;

Другие вопросы по тегам