首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >wpf图像在某些ListBoxItems中不显示

wpf图像在某些ListBoxItems中不显示
EN

Stack Overflow用户
提问于 2013-03-04 15:40:32
回答 2查看 103关注 0票数 0

我有一个定义为ItemTemplateListBox。我的问题是图像只显示在每个类型的一个项目中。即:

如何使所有项目显示其相关状态?

代码语言:javascript
复制
<ListBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <ContentControl x:Name="status">
                <ContentControl.Style>
                    <Style TargetType="ContentControl">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Status}" Value="NotDownloaded">
                                <Setter Property="Content">
                                    <Setter.Value>
                                        <Image Source="/Images/help-file24.png"/>
                                    </Setter.Value>
                                </Setter>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Status}" Value="Downloaded">
                                <Setter Property="Content">
                                    <Setter.Value>
                                        <Image Source="/Images/file-complete24.png""/>
                                    </Setter.Value>
                                </Setter>
                            </DataTrigger>
                            <DataTrigger Binding="{Binding Status}" Value="Error">
                                <Setter Property="Content">
                                    <Setter.Value>
                                        <Image Source="/Images/file-warning24.png"/>
                                    </Setter.Value>
                                </Setter>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </ContentControl.Style>
            </ContentControl>
            <TextBlock Text="{Binding Url}" Margin="5,0" />
        </StackPanel>
    </DataTemplate>
</ListBox.ItemTemplate>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-04 15:55:02

我在stackoverflow上找到了this

如果您要在多个地方使用图像,那么只需将图像数据加载到内存中一次,然后在所有图像元素之间共享它是值得的。

为此,请在某个位置创建一个BitmapSource作为资源:

代码语言:javascript
复制
<BitmapImage x:Key="MyImageSource" UriSource="../Media/Image.png" />

然后,在您的代码中使用如下内容:

代码语言:javascript
复制
<Image Source="{StaticResource MyImageSource}" /> 

在我的例子中,我发现我必须将Image.png文件设置为

的构建操作,而不仅仅是内容。这会导致在编译后的程序集中携带图像。

票数 2
EN

Stack Overflow用户

发布于 2013-03-04 16:07:01

Image是一个UIElement,这意味着它是控件层次结构的一部分,并且在任何给定时间只能有一个父级。

您的模板所做的是设置与许多ContentControl的内容相同的Image控件实例。因此,它只对第一个ContentControl有效,然后失败,因为Image已经有了父级。

您可以尝试将ContentControl替换为Image,并在DataTrigger%s中设置Image的源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15196732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档