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

Windows Presentation Foundation Discussion :

Path vs PathGeometry dans DataTemplate


Sujet :

Windows Presentation Foundation

  1. #21
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut
    voila ce qui marche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     public class RDHNode : INotifyPropertyChanged
        {......}



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    public class GraphSetNode 
        {
            public ObservableCollection<RDHNode> mylist { get; set; }
    ....
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     this.DataContext = mysource;    //de type GraphSetNode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     <ListBox x:Name="listBox1" 
                     Margin="0" Grid.Row="2" Background="#FF080707"
                     ItemTemplate="{StaticResource viewpath}" 
                     ItemsSource="{Binding Path=mylist, Mode=OneWay}"   >
    .....
    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
     
     
     <DataTemplate   x:Key="viewpath"   >
     
                <Canvas Name="itemcanvas" Background="Transparent" 
                        PreviewMouseMove="itemcanvas_PreviewMouseMove"
                        PreviewMouseLeftButtonDown="itemcanvas_PreviewMouseLeftButtonDown"
                        PreviewMouseLeftButtonUp="itemcanvas_PreviewMouseLeftButtonUp"     >
                    <Path x:Name="pathnode" 
                          Stroke="Green" 
                          Fill="Black" 
                          Stretch="None" 
                          Data="{Binding Path =geoview1.geometryform}" 
     
    .......
    par contre je ne sais pas faire la même chose avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    public class GraphSetNode : ObservableCollection<RDHNode>
        {
     
    ....
    }
    le Binding du DataTemplate ne donne rien, et puis je ne veux pas utiliser de DataTemplate typé moi mon problème c’est la forme géométrique que je gère dans le Path

  2. #22
    Membre chevronné
    Homme Profil pro
    edi
    Inscrit en
    Juin 2007
    Messages
    899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : edi

    Informations forums :
    Inscription : Juin 2007
    Messages : 899
    Points : 1 916
    Points
    1 916
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class GraphSetNode : ObservableCollection<RDHNode>
    { 
    ....
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.DataContext = mysource;    //de type GraphSetNode
    Tu accèdes à ta liste en bindant directement sur le DataContext :
    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <ListBox x:Name="listBox1" 
      Margin="0" Grid.Row="2" Background="#FF080707"
      ItemTemplate="{StaticResource viewpath}" 
      ItemsSource="{Binding Path=., Mode=OneWay}">
    Le point dans le Path signifie que tu te bindes directement sur la source du Binding.

    Ton DataTemplate doit présenter des RDHNode, alors il vaut mieux le lui dire pour qu'il puisse t'aider :

    Code XAML : Sélectionner tout - Visualiser dans une fenêtre à part
    <DataTemplate x:Key="viewpath" DataType="monNamespace:RDHNode">

  3. #23
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 232
    Points : 94
    Points
    94
    Par défaut
    je reviens aux méthodes de mouvement :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
     
    private Path selPath = null;//selected path
            private PathGeometry pg1 = null;
            private TranslateTransform tr = null;
            private Point p0, p1;
            private double dx, dy;
            private int count = 0;
     
            private void itemcanvas_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
            {
     
                dx = dy = 0;
                selPath = null;
                pg1 = null;
                FrameworkElement elem = e.OriginalSource as FrameworkElement;
                if (elem == null) return;
     
                if (elem.GetType() != typeof(Path)) return;
                selPath = elem as Path;
                if (selPath == null) return;
     
                selPath.CaptureMouse();
     
                pg1 = selPath.Data as PathGeometry;
                if (pg1 == null ) return; 
                tr = pg1.Transform as TranslateTransform;
                p0 = e.GetPosition(selPath);
     
            }
     
            private void itemcanvas_PreviewMouseMove(object sender, MouseEventArgs e)
            {
                if (selPath != null)
                {
     
                    p1 = e.GetPosition(selPath);
                    dx = p1.X - p0.X;
                    dy = p1.Y - p0.Y;
                    tr.X += dx;
                    tr.Y += dy;
                    p0 = p1;
     
     
                }
            }
     
            private void itemcanvas_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
            {
                if (selPath == null) return;
     
                //liberer la capture souris  
                selPath.ReleaseMouseCapture();
                dx = dy = 0;
                selPath = null;
                pg1 = null;
     
     
            }

    sa bouge .....mais désq ue le mouvement de la sourie devient plus rapide la forme ne suit pas.


    autre intrigue :
    le canvas dans DataTemplate

    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
     
    <DataTemplate   x:Key="viewpath"  >
     
                <Canvas Name="itemcanvas" Background="Transparent" 
                        PreviewMouseMove="itemcanvas_PreviewMouseMove"
                        PreviewMouseLeftButtonDown="itemcanvas_PreviewMouseLeftButtonDown"
                        PreviewMouseLeftButtonUp="itemcanvas_PreviewMouseLeftButtonUp"     >
                    <Path x:Name="pathnode" 
                          Stroke="Green" 
                          Fill="Gray" 
                          Stretch="None" 
                          Data="{Binding Path =geoview1.geometryform}" 
                          Visibility="{Binding Path=geoview1.visibility1}">
                    </Path>
    ..........
    c'est un seul pour tous les Items ou alors pour chaque item il faut un host?

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Class-Path qui disparaît dans MANIFEST.MF
    Par Bash01 dans le forum Général Java
    Réponses: 1
    Dernier message: 24/04/2013, 12h24
  2. [Débutant] Path Dll mobile dans Dllimport
    Par cdumargu dans le forum C#
    Réponses: 21
    Dernier message: 02/02/2012, 14h36
  3. Source d'une Image dans DataTemplate
    Par jeanjean40 dans le forum Silverlight
    Réponses: 6
    Dernier message: 18/08/2011, 17h37
  4. Modifier le path des images dans jquery-ui.css
    Par bertrand0756 dans le forum jQuery
    Réponses: 1
    Dernier message: 13/06/2011, 17h47
  5. Réponses: 1
    Dernier message: 06/11/2008, 13h02

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