簡體   English   中英

如何從選定的ListBox控件的listboxitem獲取屬性? C#

[英]How do i get a property from a selected ListBox Control 's listboxitem ? 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時,我單擊保存按鈕時需要它返回藍色Facebook圖像的來源

IconListbox.SelectedItem,然后對其進行投射或創建它們的新對象。

Image i = (Image)IconListbox.SelectedItem;

您可以在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;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM