如何在wpf中的组标题中显示属性名称
问题描述:
<!-- GroupHeaderStyle -->
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="False" Margin="15,0,0,0">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ????????????}"/>
<TextBlock Text="-->"/>
<TextBlock Text="{Binding Name}"/>
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
在上面的代码中,我希望显示用于分组的属性名称。 例如性别 - >男孩;性别 - >女孩。如何在wpf中的组标题中显示属性名称
public class Test
{
string gender;
public string Gender
{
get { return gender; }
set { gender = value; }
}
}
我应该提供什么????????????在上面的xaml?
另外,请让我知道是否有任何好书或链接,解释了ListCollectionView
分组的内部细节。
答
DataContext
应该是CollectionViewGroup的一个实例,它将Name
属性设置为“组”(即Gender的值)。但是CollectionViewGroup与它来自哪个属性之间没有关联。技术上,该物业可能是多层次的。
唯一不错的选择是对包含所有需要的信息的另一个属性进行排序。 CollectionViewGroup.Name
属性是一个对象,而不是一个字符串。所以,你可以这样做:
,然后访问它像这样:
<!-- GroupHeaderStyle -->
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander IsExpanded="False" Margin="15,0,0,0">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Name.Title}"/>
<TextBlock Text="-->"/>
<TextBlock Text="{Binding Name.Gender}"/>
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这是基本的想法,但你可以做GenderGroup更通用。因此,而不是硬编码"Gender"
你可以通过它有一个参数。
谢谢CodeNaked的答复... 这是否意味着我不能得到任何直接的方式显示在标题中的属性名称...? –
@SudhakarSingh - 我添加了唯一可以考虑我的答案的工作。 – CodeNaked