20

CollectionViewSource の基本的な使用を試みていますが、機能していないため、何かが欠けているに違いありません。ここに私のXAMLがあります:

<Window.Resources>
  <CollectionViewSource Source="{Binding loc:MainVM.Instance.MapItems}" x:Key="MapCV">
     <CollectionViewSource.GroupDescriptions>
        <PropertyGroupDescription PropertyName="SourceProject" />
     </CollectionViewSource.GroupDescriptions>
  </CollectionViewSource>
</Window.Resources>

<ListBox ItemsSource="{StaticResource MapCV}" HorizontalContentAlignment="Stretch" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid HorizontalAlignment="Stretch">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="2*"/>
                    <ColumnDefinition Width="2*"/>
                    <ColumnDefinition Width="50"/>
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Text="{Binding SourceType, Converter={StaticResource WorkItemTypeToStringConverter}}"/>
                <ComboBox Grid.Column="1" SelectedItem="{Binding DestType}" ItemsSource="{Binding WorkItemTypesForCurrentDestProject, Source={x:Static loc:MainMediator.Instance}, diagnostics:PresentationTraceSources.TraceLevel=High}" DisplayMemberPath="Name" />
                <Button Grid.Column="2" Content="{Binding PercentMapped}"/>
            </Grid>
        </DataTemplate>                                        
    </ListBox.ItemTemplate>
</ListBox>

これは正常にコンパイルされますが、アプリを実行すると次のエラーが発生します。

属性 'ItemsSource' の値をタイプのオブジェクトに変換できません
「System.Collections.IEnumerable」。'System.Windows.Data.CollectionViewSource'
プロパティ 'ItemsSource' の有効な値ではありません。オブジェクトのエラー
マークアップ ファイル 'WIAssistant;component/main.xaml 内の 'System.Windows.Controls.ListBox'

これは私が添付しているコレクションです:

// The mappings used to copy the values of the fields of one WorkItem to another.
public ObservableCollection<WorkItemTypeMapping> WorkItemTypeMappings
{
    get { return (ObservableCollection<WorkItemTypeMapping>)
          GetValue(WorkItemTypeMappingsProperty); }
    set { SetValue(WorkItemTypeMappingsProperty, value); }
}
public static readonly DependencyProperty WorkItemTypeMappingsProperty = 
    DependencyProperty.Register("WorkItemTypeMappings", 
    typeof(ObservableCollection<WorkItemTypeMapping>), typeof(MainMediator), 
    new UIPropertyMetadata(null));

object で単純なグループ化を行いたいだけですProject SourceProject。このためにツリービューを分割する必要はありません。

4

1 に答える 1

45

これはあなたのために働くはずです

<ListBox ItemsSource="{Binding Source={StaticResource MapCV}}" ...
于 2010-01-23T22:26:48.700 に答える