如何从选定的 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>
例如,如果我单击按钮,它应该 return 当前所选项目的图像源。因此,如果选择了 ListboxItem defaultIcon,它应该 return defaulticon.png。我该怎么做?
编辑:
也许我尝试使用列表框时采取了错误的方法。我是 Xaml 代码的新手,我会尝试更好地解释我想要的结果。
这是我将用来尝试解释的图片:Image
因此,当我单击“保存”按钮
时,我想要的是1时,我需要它return蓝色火焰图像的来源
选择2时,当我单击“保存”按钮
时,我需要return蓝色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;
}
就像标题所说的那样,我想在单击按钮时从选定的列表框项中获取 属性 的值
<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>
例如,如果我单击按钮,它应该 return 当前所选项目的图像源。因此,如果选择了 ListboxItem defaultIcon,它应该 return defaulticon.png。我该怎么做?
编辑:
也许我尝试使用列表框时采取了错误的方法。我是 Xaml 代码的新手,我会尝试更好地解释我想要的结果。
这是我将用来尝试解释的图片:Image
因此,当我单击“保存”按钮
时,我想要的是1时,我需要它return蓝色火焰图像的来源选择2时,当我单击“保存”按钮
时,我需要return蓝色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;
}