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 :

ControlTemplate sur Window, comment executer des méthodes de Window


Sujet :

Windows Presentation Foundation

  1. #1
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut ControlTemplate sur Window, comment executer des méthodes de Window
    bonjour

    j'ai fait un ControlTemplate et un Style pour la classe Window
    le template mets des bouton pour fermer et réduire la fenetre, mais je ne sais pas comment executer close et modifier windowstate depuis le template

    (c'est les bouton avec _ et X comme texte)

    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
     
    <ControlTemplate  x:Key="WindowTemplate" TargetType="{x:Type Window}" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" >
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="30"/>
                        <RowDefinition />
                    </Grid.RowDefinitions>
     
                    <Border Grid.Row="0" BorderThickness="2,2,2,2"  BorderBrush="Gray"   CornerRadius="10,10,0,0">
                        <Border.Background>
                            <LinearGradientBrush   StartPoint="0,0" EndPoint="1,0">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="#050C21" Offset=" 0"/>
                                    <GradientStop  Color="#BBBBAA" Offset=" 1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.Background>
                        <Grid>
                            <TextBlock Text="{TemplateBinding Title}" Foreground="White" FontSize="16" VerticalAlignment="Center" HorizontalAlignment="Center" />
                            <StackPanel Orientation="Horizontal"  HorizontalAlignment="Right" VerticalAlignment="Center" >
                            <Button Content="  _  " Foreground="White" Margin="1" />
                            <Button Content="  X  " Foreground="White" Style="{StaticResource BoutonRouge}"  Margin="1"  />
                            </StackPanel>
                        </Grid>
                    </Border>
     
                    <Border  Grid.Row="2" BorderBrush="Gray" BorderThickness="2,0,2,2" 
                            CornerRadius="0,0,10,10"  >
                        <!--MouseLeftButtonDown="{TemplateBinding DragMove}"-->
                        <Border.Background>
                            <LinearGradientBrush   StartPoint=" 1,0">
                                <LinearGradientBrush.GradientStops>
                                    <GradientStop Color="#E5F3FF" Offset=" 0"/>
                                    <GradientStop  Color="#052E63" Offset=" 1"/>
                                </LinearGradientBrush.GradientStops>
                            </LinearGradientBrush>
                        </Border.Background>
                        <AdornerDecorator>
                            <ContentPresenter  Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}"  />
                        </AdornerDecorator>
                    </Border>
                </Grid>
     
            </ControlTemplate>
    et il me faudrait aussi sur le mousedown du 1er border appeler DragMove (pour déplacer la fenetre)

    merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    ben tu met un event sur les boutons

  3. #3
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    ah, je précise, le style est codé sur application.xaml, donc les code behind est application.xaml.vb, donc pas de référence sur la fenetre ...
    j'ai testé de chercher le parent jusqu'à tomber sur quelque chose de type window, mais ca ne fonctionne pas, après grid je tombe sur nothing

    autre question d'ailleurs, le style est appliqué à l'execution, mais pas en mode design ! pourquoi donc alors que pour les controles il est bien appliqué en mode design ?

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    y'a deux solution en fait
    - soit utiliser des commandes
    - soit capturer le button click sur le parent supperieur (vu que c'est un routed event)

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Citation Envoyé par sperot51
    ah, je précise, le style est codé sur application.xaml, donc les code behind est application.xaml.vb, donc pas de référence sur la fenetre ...
    j'ai testé de chercher le parent jusqu'à tomber sur quelque chose de type window, mais ca ne fonctionne pas, après grid je tombe sur nothing
    Il me semble que ceci fait référence à la fenêtre :

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Current.MainWindow

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    Citation Envoyé par binoo
    Application.Current.MainWindow
    ce n'est que la fenetre principale ... ca ne devrait pas aller ...


    Citation Envoyé par ikeas Voir le message
    y'a deux solution en fait
    - soit utiliser des commandes
    - soit capturer le button click sur le parent supperieur (vu que c'est un routed event)

    des commandes j'y ai pensé, mais là aussi, je ne sais pas où mettre la commande, on peut passer des paramètres sur les commandes, mais là aussi il faudrait que je retrouve la fenetre qui va avec le bouton ...

    "capturer le button click sur le parent supperieur"
    c'est assez flou pour moi, enfin je vois pas comment ca pourrait m'aider ...

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    en fait quand tu utilise des routed event
    tu peux mettre un buttion.click="monevent"
    sur le container qui contient ton objet
    fait le test tu verra tu reccup tout les boutons click
    en mettant un datacontext dans le bouton et u tag particulier tu peux faire ce que tu veux

    tiens regarde ca
    http://msdn.microsoft.com/en-us/library/ms742806.aspx

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 177
    Points : 25 125
    Points
    25 125
    Par défaut
    les routedevent sont en effet la solution

    j'ai géré sur application.xaml les evenements previewmouseup et previewmousedown sur le window via des eventsetter dans le style

    dans le code behind je teste le nom de e.originalsource et j'ai le window dans sender


    bien le merci !

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

Discussions similaires

  1. [Xandros] [EEEPC] comment lire des .EXE sans windows ?
    Par jean jacques39 dans le forum Autres
    Réponses: 7
    Dernier message: 22/04/2008, 11h13
  2. comment ajouter des méthodes à une classe lors Runtime?
    Par revever dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 31/03/2008, 14h53
  3. [POO] Comment ajouter des méthodes à un objet DIV ?
    Par Murasame dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 09/10/2007, 00h01
  4. Comment gérer des reps sous Windows & Linux ?
    Par Sylver--- dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2007, 14h04
  5. [Sécurité] Execution des include() sous windows/Linux
    Par secteur_52 dans le forum Langage
    Réponses: 27
    Dernier message: 14/11/2005, 19h50

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