代码之家  ›  专栏  ›  技术社区  ›  Nicke Manarin

仅在XAML中对组合框中的项进行分组

  •  0
  • Nicke Manarin  · 技术社区  · 4 年前

    我正在尝试对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>
    

    这编译得很好,但当我运行应用程序时,会出现以下错误:

    Cannot convert the value in attribute 'ItemsSource' to object of type 
    'System.Collections.IEnumerable'. 'System.Windows.Data.CollectionViewSource' 
    is not a valid value for property 'ItemsSource'.  Error at object 
    'System.Windows.Controls.ListBox' in markup file 'WIAssistant;component/main.xaml
    

    // 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));
    

    我只想对对象进行简单的分组 Project SourceProject . 我宁愿不必为此打破树状视图。

    0 回复  |  直到 15 年前
        1
  •  43
  •   Bryan Anderson    15 年前

    这应该对你有用

    <ListBox ItemsSource="{Binding Source={StaticResource MapCV}}" ...