0


0

オプションで、HierarchicalDataTemplateに画像を表示

TreeViewにはいくつかのHierarchicalDataTemplatesがあります。 それらの1つでは、この場合のプロパティが `HasMissingFit`である場合、ラベルの右側に画像を表示します。そうでない場合、画像はまったく表示されません。

画像が常に存在するようにしたい場合は、コンバーターで単に「Image」タグを使用してこれを行うことができますが、プロパティがfalseの場合、画像はまったく表示されません。

5 Answer


2


最も簡単な方法は、おそらくコンバーターを使用して画像のVisibility-PropertyをHasMissingFitにバインドし、TrueをVisibleに、falseをHiddenに変換することです(または、そのスペースを他の何かに使用する場合はCollapsed)。 画像が実際に存在しないようにするには、画像の親にトリガーを作成する必要があります。 カスタムスタイルでContentControlを定義し、そのスタイルでトリガーを定義します。トリガーは、HasMissingFit == Trueの場合に画像をコンテンツとして設定します。


2


値コンバーターやテンプレートセレクターをコーディングする必要はありません。「Image」の「Visibility」を「Collapsed」に設定し、「DataTrigger」を使用する「Image」にスタイルをアタッチするだけです。 :


レイアウトによっては、「表示」を「非表示」に設定する方が「折りたたむ」よりも意味があります。そうすれば、画像の表示または非表示はレイアウトのフローに影響しません。


1


私が考えることができるいくつかのオプションがあります:

  1. このプロパティを画像の可視性にバインドできます。 この場合、 画像は存在しますが、画面には描画されません。

  2. 正しいものを選択するDataTemplateSelectorを作成できます このプロパティに基づくDataTemplate。


1


画像の折りたたみ/表示のコンバーターに関連して、代わりにtrueを画像ソースに、またはfalseをnullに変換するコンバーターを実行できます


0


私が最初に思いついたのは、他のプロパティが設定されている場合は必要な画像を返すプロパティにバインドされた画像を使用することであり、そうでない場合はnullです。

これにより、後でプロパティごとに異なるアイコンを使用することにした場合に、簡単に拡張できます。

分離コードでは:

public ImageSource MyImage
{
    get
    {
        if (this.IsImageFit)
            return .....;   // return an ImageSource using your image
        else
            return null;
    }
}