none
Erreur dans le changement de la source de données d'un affichage RRS feed

  • Question

  • Bonjour !
    Alors voilà, j'obtiens une erreur lorsque je veux changer la source des Items affichés. Voici l'erreur générée :
    Une exception de première chance de type 'System.Exception' s'est produite dans MonAppli.exe
    Une exception de type 'System.Exception' s'est produite dans  MonAppli.exe mais n'a pas été gérée dans le code utilisateur
    Informations supplémentaires : Défaillance irrémédiable (Exception de HRESULT : 0x8000FFFF (E_UNEXPECTED))
    Pour résumer : J'ai deux "ObservableCollection" d'objets "BTask" qui sont des tâches (classe que j'ai créée), la première comprend toutes les tâches non validées, et la seconde, les tâches validées.
    Lors du clic sur un bouton pour changer la vue et afficher les tâches validées, je dois changer la source de données de mon affichage.
    Ce que j'ai fait (expliqué plus bas) fonctionnait jusqu'à ce que je remplace dans l'affichage le Grid par un VariableGridView qui est une classe héritée de GridView (provenant de http://blogs.u2u.be/diederik/post/2012/03/07/Databinding-to-the-VariableSizedWrapGrid-in-Windows-8-Metro.aspx) :
        public class VariableGridView : GridView
        {
            protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
            {
                var viewModel = item as IResizable;
                element.SetValue(VariableSizedWrapGrid.ColumnSpanProperty, viewModel.Width);
                element.SetValue(VariableSizedWrapGrid.RowSpanProperty, viewModel.Height);
                base.PrepareContainerForItemOverride(element, item);
            }
        }
    Voici donc mes données :

    DataSource.cs :

            private ObservableCollection<BTask> _btasks = new ObservableCollection<BTask>();
            public ObservableCollection<BTask> btaskItems
            {
                get { return this._btasks; }
            }
            private ObservableCollection<BTask> _checkedBtasks = new ObservableCollection<BTask>();
            public ObservableCollection<BTask> checkedBtasks
            {
                get { return this._checkedBtasks; }
            }
    L'affichage :

    file.xaml :
            <CollectionViewSource
                x:Name="itemsViewSource"
                Source="{Binding Items}"/>
            <CollectionViewSource
                x:Name="checkedItemsViewSource"
                Source="{Binding CheckedItems}"/>
    [...]
            <local:VariableGridView
                    x:Name="itemGridView"
                    [...]
                    ItemsSource="{Binding Source={StaticResource itemsViewSource}}">
    Et le code behind :
    file.xaml.cs :

            protected override void OnNavigatedTo(NavigationEventArgs e)
            {
                    this.DefaultViewModel["Items"] = btaskDS.btaskItems;
                    this.DefaultViewModel["CheckedItems"] = btaskDS.checkedBtasks;
            }

            private void ChangeView_Click(object sender, RoutedEventArgs e)
            {
                itemGridView.ItemsSource = this.DefaultViewModel["CheckedItems"];
                [...]
             }
    Si vous avez une idée sur l'erreur générée, ça m'aiderait, je suis un peu bloqué là...
    Merci beaucoup !
    • Déplacé Florin Ciuca vendredi 7 septembre 2012 11:38 (Origine :Développement d’applications de style Metro pour Windows 8)
    dimanche 6 mai 2012 09:33

Réponses

  • Bonjour,
    merci, mais nous avons abandonné une partie de l'application (par manque de temps) pour la première version, et du coup le problème n'est plus d'actualité.
    Merci quand même !
    • Marqué comme réponse Renaud C jeudi 10 mai 2012 12:16
    jeudi 10 mai 2012 12:15

Toutes les réponses