1

データグリッドのグループ ヘッダーで、列ごとにいくつかの追加情報を確認したいと考えています。ヘッダーは、いくつかのサブ Stackpanel を含む Stackpanel で構成されます。ユーザーがデータグリッドの列のサイズを調整できるという事実により、対応する列の幅にそれらの幅をバインドするたびに、単一のヘッダー部分のサイズを調整する必要があります。

 <ControlTemplate TargetType="{x:Type GroupItem}">
     <Expander IsExpanded="False">
         <Expander.Header>
             <StackPanel Orientation="Horizontal">
                  <StackPanel 
                       Orientation="Horizontal"
                       Width="{Binding Source={x:Reference TextCol01}, Path=ActualWidth}" >
                       <TextBlock Text="{Binding Path=Name}" />
                       <TextBlock Text=" ("/>
                       <TextBlock Text="{Binding Path=ItemCount}" FontSize="13" FontWeight="Bold"/>
                       <TextBlock Text=")"/>
                   </StackPanel>
                   <StackPanel 
                       Orientation="Horizontal">
                       <TextBlock Text="{Binding Path=Name}" />
                       <TextBlock Text=" ("/>
                       <TextBlock Text="{Binding Path=ItemCount}" FontSize="13" FontWeight="Bold"/>
                       <TextBlock Text=")"/>
                   </StackPanel>
                </StackPanel>
             </Expander.Header>
          <ItemsPresenter />
      </Expander>
  </ControlTemplate>

幅 (Width="{Binding Source={x:Reference TextCol01}, Path=ActualWidth}") をバインドしないと、CollectionViewGroup の Name と ItemCount へのバインドは完全に機能します。しかし、幅をバインドすると失敗します。

Binding Source に関係していると思います。それはコンテキストなどを変更します。しかし、私はそれの何が悪いのか正確にはわかりません。

誰でも助けてもらえますか?ありがとうございました!

4

1 に答える 1

1

私はそれを考え出した。幅をバインドするこの方法はうまく機能しています:

Width="{Binding ElementName=TextCol01, Path=ActualWidth}"

これは機能しません:

Width="{Binding Source={x:Reference TextCol01}, Path=ActualWidth}"

スタンドアロンで動作しますが、ItemCount と Name のバインディングと一緒に使用すると失敗します。

于 2012-07-04T11:20:59.203 に答える