0

でグループ化の外観をカスタマイズしていListBoxます。でListBox.Resources、私は次のようなものを宣言しました(フォーマットは削除されました):

<Style TargetType="{x:Type GroupItem}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type GroupItem}">
        <StackPanel Orientation="Vertical">
          <!-- Group label -->
          <ContentPresenter />
          <!-- Items in group -->
          <ItemsPresenter />
        </StackPanel>
      </ControlTemplate>
    </Setter.Value>
  </Setter>
</Style>

実際のグループラベルはあまり読みにくいので、値変換器を使用して見やすくしたいと思います。ただし、このテキストを取得して変換する方法が見つかりません。

Bindingコンバーターを使用させてくれると思います。

上記を次のようなものに置き換えてみましたContentPresenter...

<TextBlock Text="{TemplateBinding Content}"/>

<TextBlock Text="{Binding}"/>

...そして他の多くのものが、役に立たない。助言がありますか?

4

1 に答える 1

2

まあ、それは典型的なことではありません。投稿後すぐに答えを見つけました...

<TextBlock Text="{Binding Path=Content.Name,
  RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=GroupItem},
  Converter={StaticResource MyConverter}}"/>

実際に質問をするプロセスだけで、何もないところから答えが引き出されることがあります。この場合GroupItem.NET Reflectorのソース コードを見るとうまくいきました。

他の誰かがこのエッジケースが役立つことを願っています. GroupItemそれでも、このためのプロパティを直接公開した方がずっといいでしょう。

これを行うためのより良い方法を知っている人には、まだ正しい答えを与えます。

于 2009-04-14T11:44:14.460 に答える