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

C# Discussion :

Modifier Control Template dans le code Behind WPF/C#


Sujet :

C#

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 15
    Par défaut Modifier Control Template dans le code Behind WPF/C#
    Bonjour chers amis développeurs;

    dans mon application j'ai un ResourceDictionary " DesignerItem" où je de définie un Control Template "<ControlTemplate x:Key="ConnectorDecoratorTemplate" TargetType="{x:Type Control}">" , ce Control Template me permet d'avoir des points sur mes objets de type "DesignerItem" pour tracer des lignes entre ces point par la suite. Pour cela ce control template est appéllé dans le style définie pour les objets "DesignerItem".

    ce que je veux faire maintenant c'est de pourvoir définir ou modifier le Control template"<ControlTemplate x:Key="ConnectorDecoratorTemplate" TargetType="{x:Type Control}">" dans le code source codeBehind car le nombre de point qui permet de dessiner une ligne est dynamique, chaque objet a nombre différents de points... le nombre de points qui vont être représentes par le control Template n'est connu que lorsque l’utilisateur fait un drop d'un objet sur un canvas, donc c'est a ce moments la que je veux intervenir pour modifier le controle Template pour avoir les points sur cet objet !!.

    je ne sais pas si cela est faisable ou pas ??? :'( ... je ne sais pas si je dois parser du code xaml dans mon control template ou comment je dois faire ......

    SVP, aidez moi !!

    voila mon code XAML


    Code xaml : 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
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        xmlns:sys="clr-namespace:System;assembly=mscorlib"
                        xmlns:s="clr-namespace:DiagramDesigner"
                        xmlns:c="clr-namespace:DiagramDesigner.Controls">
     
        <!-- Connector Style -->
    	<!-- les Connector son les points qui nous permet des tracer les lignes-->
        <Style TargetType="{x:Type s:Connector}">
            <Setter Property="Width" Value="8"/>
            <Setter Property="Height" Value="8"/>
            <Setter Property="Cursor" Value="Cross"/>
            <Setter Property="SnapsToDevicePixels" Value="true"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type s:Connector}">
                        <Grid >
                            <!-- transparent extra space makes connector easier to hit -->
                            <!--c un carrer qui nous permet de dessiner la line entre les object-->
    						<Rectangle Fill="red" Margin="-2"/>
                            <Rectangle Fill="Red" StrokeThickness="5" Stroke="#AA000080"/>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
     
     
        <!--
        la partie suivante c'est la partie qui me me pose un probleme,
        c'est la partie que je veux la modifer a partir du code source 
        -->
     
        <!-- ConnectorDecoratorTemplate Default Template -->
     
     
        <ControlTemplate  x:Key="ConnectorDecoratorTemplate" TargetType="{x:Type Control}">
     
            <Grid x:Name="LesPointDeConnexion"><!-- les point qui me permet de tracer des lignes-->
                    <Grid.RowDefinitions>
                        <RowDefinition Height="0.5*"/>
                        <RowDefinition Height="0.5*"/>
                    </Grid.RowDefinitions>
                <s:Connector  Orientation="Left"  VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5" Grid.Row="0"/>
                <s:Connector  Orientation="Left"  VerticalAlignment="Center" HorizontalAlignment="Left" Margin="5" Grid.Row="1"/>
     
                </Grid>
        </ControlTemplate>
     
     
        <!-- DesignerItem Style -->
        <Style  TargetType="{x:Type s:DesignerItem}">
            <Setter Property="MinWidth" Value="10"/>
            <Setter Property="MinHeight" Value="10"/>
            <Setter Property="SnapsToDevicePixels" Value="True"/>        
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type s:DesignerItem}">
                        <Grid DataContext="{Binding RelativeSource={RelativeSource TemplatedParent}}">
     
                            <!-- PART_DragThumb -->
                            <c:DragThumb x:Name="PART_DragThumb" 
                                         Cursor="SizeAll"/>
     
                            <!-- PART_ResizeDecorator -->
                            <Control x:Name="PART_ResizeDecorator" 
                                     Visibility="Collapsed"
                                     Template="{StaticResource ResizeDecoratorTemplate}"/>
     
                            <!-- PART_ContentPresenter -->
                            <ContentPresenter x:Name="PART_ContentPresenter"
                                              HorizontalAlignment="Stretch"
                                              VerticalAlignment="Stretch"
                                              Content="{TemplateBinding ContentControl.Content}"
                                              Margin="{TemplateBinding ContentControl.Padding}"/>
     
     
                            <!-- PART_ConnectorDecorator -->
                            <Control x:Name="PART_ConnectorDecorator"
                                     Visibility="Visible"
                                     Template="{StaticResource ConnectorDecoratorTemplate}"/>
                        </Grid>
                        <ControlTemplate.Triggers>
                            <DataTrigger Value="True" Binding="{Binding RelativeSource={RelativeSource Self},Path=IsGroup}">
                                <Setter TargetName="PART_DragThumb" Property="Visibility" Value="Collapsed"/>
                            </DataTrigger>
                            <MultiDataTrigger>
                                <MultiDataTrigger.Conditions>
                                    <Condition Value="True" Binding="{Binding RelativeSource={RelativeSource Self},Path=IsSelected}"/>
                                    <Condition Value="{x:Static sys:Guid.Empty}" Binding="{Binding RelativeSource={RelativeSource Self},Path=ParentID}"/>
                                </MultiDataTrigger.Conditions>
                                <Setter TargetName="PART_ResizeDecorator" Property="Visibility" Value="Visible"/>
                            </MultiDataTrigger>
                            <Trigger Property="IsMouseOver" Value="true">
                                <Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Visible"/>
                            </Trigger>
                            <DataTrigger Value="True" Binding="{Binding RelativeSource={RelativeSource Self},Path=IsDragConnectionOver}">
                                <Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Visible"/>
                            </DataTrigger>
                            <DataTrigger Value="True" Binding="{Binding RelativeSource={RelativeSource Self},Path=IsGroup}">
                                <Setter TargetName="PART_ConnectorDecorator" Property="Visibility" Value="Hidden"/>
                            </DataTrigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
     
    </ResourceDictionary>

    Donc ce que je veux est de modifier le control Template qui porte x:Key="ConnectorDecoratorTemplate" dans le code source pour pouvoir l'adapter selon le nombre de point de l'objet.

    En fichier attaché une image qui représente le résultat actuel.

    Merci bien mes chers amis
    Images attachées Images attachées  

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/06/2011, 13h12
  2. WPF ListBox : comment itérer dans les ListBoxItem dans le "code behind"
    Par jmnicolas dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 07/10/2010, 15h24
  3. Réponses: 1
    Dernier message: 20/08/2009, 12h12
  4. Réponses: 1
    Dernier message: 06/11/2008, 13h02
  5. Réponses: 1
    Dernier message: 20/01/2007, 11h47

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