0

私は既存のコードに取り組んでいます。これには、いくつかのComboBoxItemsを含むComboBoxがあります。各アイテムには、ImageコントロールとTextBlockがあるStackPanelがあります。

これで、Imageコントロールのsourceプロパティは、XAMLファイルに保存されているさまざまなベクター画像に設定されますが、TextBlockのTextプロパティは、ローカライズされた文字列に設定されます。

個別のComboBoxItemを使用するのではなく、DataTemplateを使用してこれを実装したいと思います。TextBlockの文字列のリストを作成することはできますが、画像をそれぞれの画像コントロールにバインドする方法がわかりません。

私は他のより良い可能な解決策を受け入れています。また、それを行う正しい方法が既存のものであると思われる場合は、私に知らせてください。

これは重複した質問かもしれませんが、私の問題に対応する質問が見つかりませんでした。もしそうなら、他の質問へのリンクで十分でしょう。

編集:コードが追加されました

<ComboBox x:Name="imageInfoLevelsComboBox" SelectedIndex="1" 
          Style="{DynamicResource ComboBoxToolBarStyle}" 
          Margin="6,6,6,0" Width="50" 
          ToolTip="{x:Static Viewing:ViewingTexts.ImageInformationLevels}" 
          SelectionChanged="OnImageInfoLevelsComboBoxSelectionChanged" >
    <ComboBoxItem x:Name="showAllComboBoxItem" 
                  Style="{DynamicResource ComboBoxItemToolBarStyle}">
        <StackPanel Orientation="Horizontal">
            <Image x:Name="ImageInfoAllImage" 
                   Source="{StaticResource ImageInfoFullIcon}" 
                   Margin="0,0,4,0" 
                   Width="24" Height="24"/>
            <TextBlock 
                Text="{x:Static Viewing:ViewingTexts.ImageInformationFull}"
                Margin="10,0,0,0" 
                VerticalAlignment="Center"/>
        </StackPanel>
    </ComboBoxItem>
    <ComboBoxItem x:Name="showImportantComboBoxItem" 
        Style="{DynamicResource ComboBoxItemToolBarStyle}">
        <StackPanel Orientation="Horizontal">
            <Image x:Name="ImageInfoImportantImage" 
                   Source="{StaticResource ImageInfoLimitedIcon}" 
                   Margin="0,0,4,0" 
                   Width="24" Height="24"/>
            <TextBlock 
                Text="{x:Static Viewing:ViewingTexts.ImageInformationIntermediate}"
                       Margin="10,0,0,0" 
                       VerticalAlignment="Center"/>
        </StackPanel>
    </ComboBoxItem>
    <ComboBoxItem x:Name="showNotificationsComboBoxItem" 
        Style="{DynamicResource ComboBoxItemToolBarStyle}">
        <StackPanel Orientation="Horizontal">
            <Image x:Name="ImageInfoNotificationsImage" 
                Source="{StaticResource ImageInfoNoneIcon}" 
                Margin="0,0,4,0" Width="24" Height="24"/>
            <TextBlock Text="{x:Static Viewing:ViewingTexts.ImageInformationNone}"
                       Margin="10,0,0,0" VerticalAlignment="Center"/>
        </StackPanel>
    </ComboBoxItem>
</ComboBox>

私ができると思うのは、文字列型とImage型の2つのオブジェクトでクラスを作成することです。次に、リストを作成してコンボボックスにバインドしますが、問題は、ベクター画像をオブジェクトとして使用する方法がわからないことです。

ありがとう。

4

2 に答える 2

1

文字列のリストだけでなく、少なくとも2つのプロパティを持つオブジェクトのリストをバインドする必要があると思います。1つのプロパティにはテキストブロックの文字列が含まれ、もう1つのプロパティには画像のurisourceが含まれます。

urisource定義の例については、このリンクを参照してくださいWpf-相対的な画像ソースパス

于 2013-02-28T11:22:00.503 に答える
1

ComboBoxのItemsSourceを、テキストと画像を表すプロパティを持つオブジェクトのコレクションにバインドします。次に、IValueConverterを作成し、オブジェクトのプロパティの値を画像ソースに変換できる画像のバインディングでそのインスタンスを指定する必要があります。

1つの例を次に示します。http: //www.codewrecks.com/blog/index.php/2010/07/23/bind-an-image-to-a-property-in-wpf/

于 2013-02-28T12:03:51.120 に答える