0

私は次のように定義されたを持っていますListBoxItemTemplate私の問題は、画像がタイプごとに1つのアイテムでしか表示されないことです。すなわち:

ここに画像の説明を入力してください

すべてのアイテムに関連するステータスを表示するにはどうすればよいですか?

<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>
4

2 に答える 2

2

私はstackoverflowでこれを見つけました

画像を複数の場所で使用する場合は、画像データを1回だけメモリにロードしてから、すべての画像要素間で共有する価値があります。

これを行うには、BitmapSourceをリソースとしてどこかに作成します。

<BitmapImage x:Key="MyImageSource" UriSource="../Media/Image.png" />

次に、コードで次のようなものを使用します。

<Image Source="{StaticResource MyImageSource}" /> 

私の場合、Image.pngファイルを設定して、コンテンツだけでなくリソースのビルドアクションを実行する必要があることがわかりました。これにより、コンパイルされたアセンブリ内でイメージが運ばれます。

于 2013-03-04T07:55:01.987 に答える
0

Imageは、UIElementコントロールの階層の一部であり、常に1つの親しか持てないことを意味します。

テンプレートが実行しているのはImage、多くのコンテンツと同じコントロールインスタンスを設定することContentControlです。したがって、最初にのみ機能し、その後、すでに親が存在するContentControlように失敗します。Image

をに置き換えてContentControl、のソースImageを設定してみてください。ImageDataTrigger

于 2013-03-04T08:07:00.733 に答える