IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Destruction d'un UserControl


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut Destruction d'un UserControl
    Bonjour à tous,

    J'ai un petit souci de destruction d'objet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <Grid Name="gridMain">
                    <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition/>
                            <RowDefinition Height="Auto"/>
                    </Grid.RowDefinitions>
                    <TextBlock x:Name="lblRessource" Text="Ressources :" TextWrapping="Wrap" Grid.Row="1" Foreground="{StaticResource Black}" Margin="10,10,0,0" HorizontalAlignment="Left"/>
                    <ComboBox x:Name="cbxGroupeRessource" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Margin="10,0,10,3" Style="{StaticResource ComboBoxStyleWhite}" VerticalAlignment="Center" Grid.Row="2"/>
                    <ComboBox x:Name="cbxTypeRessource" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" Margin="10,0,10,3" Style="{StaticResource ComboBoxStyleWhite}" VerticalAlignment="Center" Grid.Row="3"/>
                    <ListBox x:Name="listRessource" Grid.Row="4" ItemsSource="{Binding Mode=OneWay}" BorderBrush="{StaticResource Border}" Style="{StaticResource ListBoxStyleDispo}" HorizontalContentAlignment="Stretch" ItemContainerStyle="{StaticResource ListBoxItemStyle1}" Margin="10,0,10,10">
                    </ListBox>
                    <StackPanel x:Name="stackPanel" HorizontalAlignment="Right" Grid.Row="5" Margin="10" Orientation="Horizontal" MaxHeight="150">
                            <Button x:Name="btnAnnuler" Content="Annuler" Margin="0,0,5,0" HorizontalAlignment="Center" Style="{StaticResource BtnGreyAnnuler}" VerticalAlignment="Center" Cursor="Hand" Width="80"/>
                            <Button x:Name="btnValider" Content="Valider" HorizontalAlignment="Center" Style="{StaticResource BtnGreyValider}" VerticalAlignment="Center" Cursor="Hand" Width="80"/>
                    </StackPanel>
                    <Border Margin="8,0" VerticalAlignment="Top" Grid.Row="5" BorderBrush="#FF9E9E9E" BorderThickness="0,2,0,0"/>
                    <Border Margin="8,0" VerticalAlignment="Top" Grid.Row="5" BorderBrush="White" BorderThickness="0,1,0,0"/>
            </Grid>
     
      public void Dispose()
            {
                _baseVue = null;
                this.Resources.Clear();
     
                listRessource.DataContext = null;
                listRessource.ItemContainerStyle = null;
                listRessource.ItemsSource = null;
                listRessource.Style = null;
                listRessource.BorderBrush = null;
     
                listRessource.Template = null;
                listRessource.ItemTemplate = null;
                listRessource.ItemsPanel = null;
     
                stackPanel.Children.Clear();
                gridMain.Children.Clear();
                gridMain.ColumnDefinitions.Clear();
                gridMain.RowDefinitions.Clear();
     
                listRessource = null;
                gridMain = null;
            }
    Dans ce cas là mon user control se détruit correctement (j'ai un point d'arrêt dans le destructeur et je passe dedans sans problème).

    Par contre, si j'ajoute un datatemplate a ma listRessource comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                    <ListBox x:Name="listRessource" Grid.Row="4" ItemsSource="{Binding Mode=OneWay}" BorderBrush="{StaticResource Border}" Style="{StaticResource ListBoxStyleDispo}" HorizontalContentAlignment="Stretch" ItemContainerStyle="{StaticResource ListBoxItemStyle1}" Margin="10,0,10,10">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <CheckBox Content="{Binding Mode=OneWay}" IsEnabled="{Binding IsEnabled, Mode=TwoWay}" IsChecked="{Binding IsChecked, Mode=TwoWay}" Style="{StaticResource CKGreyRessource}" HorizontalContentAlignment="Stretch"/>
                    </DataTemplate>
                </ListBox.ItemTemplate>
                    </ListBox>
     
    listRessource.ItemTemplate = null;
    Mon objet ne se détruit plus du tout.

    Quelqu'un a une idée sur le problème ??

  2. #2
    Membre Expert
    Avatar de Samuel Blanchard
    Homme Profil pro
    Expert .NET
    Inscrit en
    Février 2010
    Messages
    1 504
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France

    Informations professionnelles :
    Activité : Expert .NET

    Informations forums :
    Inscription : Février 2010
    Messages : 1 504
    Par défaut
    Si c'est en SL4, il y a des MemoryLeaks assez sérieux sur les DataTemplates notamment.

    Heureusement un Hot Fix devrait sortir cette été pour resoudre le problème

    De Tim Heuer, le 8 juillet 2010 :

    The hotfix is not yet available. As indicated the service release will be made public this summer.
    Source :

    http://forums.silverlight.net/forums...39/439398.aspx

  3. #3
    Membre confirmé Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Par défaut
    Ah d'accord tout s'explique maintenant ! C'est bien en SL4 et voilà pourquoi j'avais plusieurs objets qui ne se détruisaient plus.

    Il y a quand même une solution dans mon cas, c'est de mettre le data template en ressource dans le user control .

    Merci pour ta réponse en tout cas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/08/2003, 20h07
  2. Probleme de destruction
    Par Merluco dans le forum Langage
    Réponses: 6
    Dernier message: 30/06/2003, 13h51
  3. [VB6] [UserControl] Évènements personnalisés
    Par Frankywinky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2003, 17h56
  4. Création/Destruction
    Par HT dans le forum Langage
    Réponses: 5
    Dernier message: 22/05/2003, 17h04
  5. Réponses: 7
    Dernier message: 18/04/2003, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo