我正在使用CollectionViewSource对我的数据进行分组。在我的数据中,我需要对Property1和Property2进行分组。
唯一的规定是我不想要另一个组的子组。所以,当我用这两个属性分组时,我不想让它成为Property2,因为它是Property1的组的一个子组。
之所以要这样做,是因为我需要一个标头来显示以下信息:
标题:
<TextBlock.Text>
<MultiBinding StringFormat="Property1: {0}, Property2: {1}">
<Binding Path="Property1"/>
<Binding Path="Property2"/>
</MultiBinding>
</TextBlock.Text>我已经在我的CollectionViewSource上尝试过了,但无法将组和子组“组合”在一起:
<CollectionViewSource x:Key="myKey" Source="{Binding myDataSource}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Property1" />
<PropertyGroupDescription PropertyName="Property2" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>是否可以将两个属性组合在一起?类似于下面的内容?
<CollectionViewSource x:Key="myKey" Source="{Binding myDataSource}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Property1,Property2" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>发布于 2011-04-14 18:35:57
实际上,您也可以在转换器上使用一些技巧,而不是在对象中创建另一个新属性。点('.')就是把整个对象传递给你的转换器。所以你可以在那里做任何逻辑算法,而不是在你的原始对象中创建新的属性。
<CollectionViewSource x:Key="myKey" Source="{Binding myDataSource}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="."
Converter="{StaticResource Property1AndProperty2}" />
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>在您的转换器中,类似于:
public class WidthAndHeightMixer : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value is YourObject)
{
return (value as YourObject).Property1 + (value as Inventory).Property2
}
}
......发布于 2011-03-04 00:41:23
您可以将这些属性组合到数据对象上的一个属性中。例如:
public class Person
{
public Person()
{
IsActive = true;
}
public string FirstName { get; set; }
public string LastName { get; set; }
public Boolean IsActive { get; set; }
public string LastNameIsActive
{
get { return LastName + IsActive.ToString(); }
}
}<Grid.Resources>
<CollectionViewSource x:Key="view" Source="{StaticResource persons}">
<CollectionViewSource.SortDescriptions>
<cm:SortDescription PropertyName="LastName" Direction="Ascending"/>
<cm:SortDescription PropertyName="IsActive" Direction="Ascending"/>
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="LastNameIsActive"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
</Grid.Resources>
<ListView ItemsSource="{Binding Source={StaticResource view}}">
<ListView.View>
<GridView>
<GridViewColumn Header="FirstName" DisplayMemberBinding="{Binding FirstName}"/>
<GridViewColumn Header="LastName" DisplayMemberBinding="{Binding LastName}"/>
</GridView>
</ListView.View>
<ListView.GroupStyle>
<GroupStyle >
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Background="Gray" DataContext="{Binding Items}">
<TextBlock.Text>
<MultiBinding StringFormat="Is Active: {0} Last Name: {1}">
<Binding Path="IsActive"/>
<Binding Path="LastName"/>
</MultiBinding>
</TextBlock.Text>
</TextBlock>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
</ListView>
https://stackoverflow.com/questions/3894195
复制相似问题