我正在使用 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>
最佳答案
实际上,您还可以在转换器上使用一些技巧,而不是在对象中创建另一个新属性。点('.')将整个对象传递到转换器中。因此,您可以在那里执行任何逻辑算法,而不是在原始对象中创建新属性。
<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
}
}
......
关于WPF CollectionViewSource 分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3894195/