2011-02-04 22 views
0

ListBoxItemでMouseoverで表示されるMiniToolbarポップアップがあります。アイテムのすぐ下に表示する必要があります。 ListBoxItem ためのControlTemplateにポップアップを定義するDataTemplate ListBoxItemのWPFポップアップ

    1. 項目のポップアップを定義: は、私は2つのオプションが試み

      (マウスオーバーのトリガーはまた、項目のIsSelectedプロパティを設定します)

    どちらのオプションも正常に機能しますが、ポップアップが毎回再作成されたかどうかはわかりませんでしたか?

    ListBoxItemではなく、ListBoxのControlTemplateでポップアップを定義する方が良いと思いますか? これを試しましたが、SelectedItem(ListBoxの下部に表示され、ListBoxItemの下部には表示されません)に相対的な配置プロパティのバインディング式は見つかりませんでした。

    提案がありますか?

    ありがとうございます。マイケル 。

  • +1

    DataTemplateの項目にポップアップを残すほうがよいです。あなたのリストボックスに何千もの項目があり、非常に詳細なポップアップを持っていない限り、パフォーマンス上の問題はありません。 – Stewbob

    答えて

    1

    ポップアップは、どちらの場合でも各リストボックス項目に対して1回作成されます。

    リストボックスのCotnrolTemplate内のすべてのアイテムに単一のポップアップを使用することは、物事をかなり複雑にするので、私は示唆しません。しかしそれでもやりたい場合は、ポップアップでPlacement="Custom"を設定し、CustomPopupPlacementCallbackと指定してください。そのコールバックでは、現在選択されている項目の位置を使用して配置を計算できます。

    +0

    ありがとうPavlo&Stewbob。 OK、私のListBoxはかなり小さいので、私はdatatemplateオプションに戻す方が良いと思います。私はコマンドをフックし始め、おそらくもっと簡単になるだろうと考えています...(これは、単一のコントロールテンプレートと再利用の考え方について、約30種類の異なるデータテンプレートを持つことです...) – Mike

    関連する問題