2017-06-05 3 views
0

グループヘッダーにグループヘッダーのスタイルをバインド: WPF - Binding to current item from within group header styleXAML - このスレッドの重複を投稿しようとしていない

私は、結合作業を得ました。私はそれがなぜ機能するのか不明確です。 XAMLのこの部分は、グループ項目を設定し、Texboxをテキストにバインドします。私が理解していないのは、「名前」プロパティへのバインディングです。 「名前」とは何の特性ですか?グループヘッダー?リンクされたスレッドが見つかるまで、データグリッド内のアイテムのプロパティにバインドしようとしていました。

<ControlTemplate TargetType="{x:Type GroupItem}"> 
     <Expander IsExpanded="True" 
       Background="#FF112255" 
       BorderBrush="#FF002255" 
       Foreground="#FFEEEEEE" 
       BorderThickness="1,1,1,5"> 
     <Expander.Header> 
      <StackPanel Orientation="Horizontal"> 
       <TextBlock FontWeight="Bold" 
         Text="SVC Node: "/> 
       <TextBlock FontWeight="Bold" 
          Text="{Binding Name}"/> 
      </StackPanel> 
      </Expander.Header> 
     <Expander.Content> 
     <ItemsPresenter /> 
     </Expander.Content> 
     </Expander> 
    </ControlTemplate> 

答えて

1

Name 取得System.Windows.Data.CollectionViewGroupオブジェクトのプロパティを参照しますWPFによって作成され、DataContextGroupItemに設定されています。

このプロパティは、ソースコレクションをグループ化するプロパティの値を返します。たとえば、というプロパティでPersonオブジェクトのソースコレクションをグループ化した場合、NameプロパティのCollectionViewGroupは「男性」または「女性」のようなものを返します。このNameプロパティは、カスタムモデルクラスのプロパティではありません。

CollectionViewGroupクラスはまた、例えば、特定のグループに属するSexプロパティリターン「男性」、全てPersonオブジェクトをオブジェクトのコレクションを返しItems性質を有しています。

希望は意味があります。

+0

ありがとうございます。それが私が来た結論です。私がリンクしているMicrosoftの例には、Datagrid内のアイテムのプロパティにバインドされた2番目のテキストボックスも含まれています。それが私が初めてこれをしたときに混乱したことです。 –

0

モデルがNameプロパティが含まれているともGroupItemのDataContextのは、同じモデルのオブジェクトが含まれている場合、その後、可視およびコントロールテンプレート内でアクセスできるようにプロパティに名前を付けます。 TextBlockでは、その名前プロパティのバインディングが機能します。

更新日: は私の分析に基づいて、グループ化されたプロパティを対応するグループ項目のNameプロパティに内部的に割り当てられており、SOそれは自動的にそのチャイルズに派生していること、enter image description here

+0

これは私が混乱していることです。私のモデル、よく私のオブジェクトのコレクション、コレクション内のオブジェクトはNameプロパティを持たず、それでも動作します。 Microsoftが提供するこの例:https://msdn.microsoft.com/en-us/library/ff407126(v=vs.110).aspx TaskクラスにNameプロパティはありませんが、動作します。バインディングはコレクション内のオブジェクトの1つのプロパティにあると思っていましたが、明らかにそうではありません。 –

+0

私はplsチェックの上のansを更新しました – SharpGobi

関連する問題