私はItemsControl
そのように定義しました:
<ItemsControl Grid.Row="2" Style="{StaticResource SellingDashboardToDosList}"
BorderThickness="1" Background="#C7E8F8" HorizontalAlignment="Stretch"
ItemsSource="{Binding Path=ToDoList}">
<ItemsControl.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="GroupItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupItem">
<GroupBox Header="{Binding Path=Model.TodoType}" >
<ItemsPresenter />
</GroupBox>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ItemsControl.GroupStyle>
</ItemsControl>
にItemsSource
ありSynchronisedObservableCollection<T>
ますViewModel
。ただし、このXAMLはグループ化を生成しません。どういうわけかグループ化できるものを指定する必要があるItemsSource
と思います。しかし、どこで指定すればよいですか?
XmlDataProvider
静的データでを使用する場合はCollectionViewSource
、次の例のような要素で使用できます。http: //cromwellhaus.com/2010/03/grouping-is-crazy-easy-in-wpf/(アーカイブ済み) 。
私はそのようにそれをやろうとしました:
<CollectionViewSource x:Key="CollectionViewSource1" Source="{Binding Path=ToDoList}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="TodoType"/>
</CollectionViewSource.GroupDescriptions>
</CollectionViewSource>
しかし、実行時のバインディングエラーが発生します。
BindingExpressionによって生成された値は、ターゲットプロパティに対して無効です。; Value ='System.Windows.Data.ListCollectionView' BindingExpression:Path = ToDoList; DataItem ='ToDosViewModel'(HashCode = 40956219); ターゲット要素は'CollectionViewSource'(HashCode = 51380674); ターゲットプロパティは「ソース」(タイプ「オブジェクト」)です。