17
J'essaie de faire un usage basique de CollectionViewSource et il me manque quelque chose parce que ça ne marche pas. Voici mon XAML:CollectionViewSource Utilisation Question
<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>
Cette compile très bien, mais quand je lance l'application je reçois cette erreur:
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
C'est la collection Je joins à:
// 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));
Je veux juste faire un simple regroupement sur l'objet Project SourceProject
. Je préférerais ne pas devoir sortir une vue d'arbre pour ceci.
Un jour, je serai trop intelligent et sait que ce genre de choses! (Merci pour l'aide!) – Vaccano
Il m'a aidé aussi ... Mais pourquoi cela fonctionne, et la variante originale ne fonctionne pas? :) –
@DmitryLobanov Fondamentalement, une CollectionViewSource n'est pas elle-même une collection, mais elle peut être utilisée pour y accéder. Cela pourrait aider http://www.zagstudio.com/blog/387#.UyC1nPldV-4 –