gpt4 book ai didi

c# - 在 ComboBox 的选中项中显示图像

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:49 28 4
gpt4 key购买 nike

我有一个用于我的 WPF 窗口 ComboBox 的自定义模板,它显示继承自 ComboBoxItem 的项,这些项也具有 Image 属性(以便我的项可以显示文本和图像)。对于任何给定项目,文本和图像都按预期显示在 ComboBox 的弹出菜单中,但我无法在当前选定的项目中显示图像。

显示当前选定项的 ComboBox 模板中的 ContentPresenter 将其 Content 属性正确绑定(bind)到 {TemplateBinding SelectionBoxItem},并且其 ContentTemplate 绑定(bind)到以下静态资源:

    <DataTemplate x:Key="SelectionBoxItemTemplateTextAndImage" DataType="{x:Type SB:SBComboBoxItem}">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="20"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<Image Source="{Binding Image}"/>
<TextBlock Grid.Column="1" Text="{Binding}"/>
</Grid>
</DataTemplate>

SBComboBoxItem 是继承自 ComboBox 的自定义控件,包含正确注册为 DependencyProperty 的“Image”属性。

我已经尝试过该 DataTemplate 的替代实现,包括使用:

{Binding Path=Image, RelativeSource={RelativeSource TemplatedParent}}

作为图像的来源。这没有用,即使当我将 TextBlock 的 Text 属性设置为时文本仍然显示:

{Binding Path=Content, RelativeSource={RelativeSource TemplatedParent}}

我试过并发现了许多显示文本的实现,但对等的实现对图像不起作用。我不明白为什么这不起作用,因为设置弹出窗口以显示图像和文本是一件轻而易举的事。

编辑:这是为 ComboBoxItem 添加的处理图像的功能,以防我在那里做错了什么:

    public static readonly DependencyProperty ImageProperty = DependencyProperty.Register("Image", typeof(Image), typeof(SBComboBoxItem));
public Image Image { get { return (Image)GetValue(ImageProperty); } set { SetValue(ImageProperty, value); } }

这里是我添加了项目的组合框:

<ComboBox SelectedIndex="1">
<SB:SBComboBoxItem Content="Text">
<SB:SBComboBoxItem.Image>
<Image Source="..\Images\Table.png"/>
</SB:SBComboBoxItem.Image>
</SB:SBComboBoxItem>
<SB:SBComboBoxItem Content="MoreText">
<SB:SBComboBoxItem.Image>
<Image Source="..\Images\Euclidian.png"/>
</SB:SBComboBoxItem.Image>
</SB:SBComboBoxItem>
</ComboBox>

最佳答案

尽管我使用 DataTemplate 通过 DataTemplate 的 DataType 属性公开所选组合框项的基础类型,但我的 ComboBox 的 SelectionBoxItem 属性显然返回了一些无法转换为我的自定义 ComboBoxItem 的内容。我不知道这是为什么,也不知道为什么它没有触发任何运行时错误,但我发现通过绑定(bind)到 ComboBox 的 SelectedItem 属性而不是 ContentPresenter 中的 SelectionBoxItem 允许我访问用户定义的属性。

关于c# - 在 ComboBox 的选中项中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11603081/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com