2017-06-05 47 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

NameSystem.Windows.Data.CollectionViewGroup对象获得的财产由WPF创建并设置为GroupItemDataContext

此属性返回您将源集合分组的属性的值。因此,例如,如果您将Person对象的源集合通过名为Sex的属性进行分组,CollectionViewGroupName属性将返回类似“男性”或“女性”的内容。这Name属性不是您的自定义模型类的属性。

CollectionViewGroup类还具有一个Items属性,返回对象的集合,例如,所有对象Person其中Sex属性返回“男性”,属于该特定的组。

希望是有道理的。

+0

谢谢。这是我得出的结论。我链接到的Microsoft示例还包含绑定到Datagrid中的项目属性的第二个文本框。这是我第一次做这件事使我感到困惑。 –

0

,如果你的模型中包含了Name属性,也GroupItem的DataContext的含有相同的模型对象,然后Name属性可见,并且能够控制模板中访问。所以名称属性绑定在TextBlock中起作用。

更新时间: 根据我的分析,相应的分组物业内部已经分成组项目的名称属性,因此它会自动导出到其孩子的, enter image description here

+0

这就是我感到困惑。我的模型,以及我的对象集合,集合中的对象没有Name属性,它仍然有效。此示例由Microsoft提供:https://msdn.microsoft.com/en-us/library/ff407126(v=vs.110).aspx在Task类中没有Name属性,但它起作用。我认为绑定是集合中某个对象的属性,显然它不是。 –

+0

我已经更新了上面的ans请检查 – SharpGobi