Comment atteinde un Usercontrol déposé dans Windows2.xaml depuis code WIndows1.c [Résolu]

Messages postés
10
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
30 janvier 2010
- - Dernière réponse : DCTerreur
Messages postés
7
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
20 août 2010
- 13 avril 2010 à 22:16
Bonjour ,et merci d' avance pour les réponses.

débutant en Visual basic et c#, c++

mon projet visual c# :
dans fichier windows1.xaml
- je dépose un User controlPerso1

dans fichier Windows2.xaml
- je dépose un Usercontrol_Perso2

je me place dans le code du fichier Windows1.cs
et je veux atteindre le Control Usercontrol_Perso2 qui a été déposé pour le lié a Usercontrol_Perso1
ex écriture
Usercontrol_Perso1.chat= Windows2.UserControlPerso2


en WinForm Visaul BAsic cette écriture est possible mais en WPF pas moyen de faire référence au control UserControlPerso2
faut-il utiliser une instruction style import using un truc du genre

donc ma question est simple comment fait on pour accéder ou faire référence a des controls qui a ont été déposé dans une windows1, depuis le code d'une windows2 qui pourrait contenir des controls également et qui doivent être lié ensemble par exemple
2em question lorsqu' on dépose un control graphique est il recencé crée réellement au niveau code

voila mon problème :)

je n ai pas trouvé d' exemple de projet d application wpf qui utilise 2,3.. fenêtre contenant des controls et qui sont liés entre eux
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
10
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
30 janvier 2010
3
Merci
bonjour, bon en fait rien de bien sorcier souvent ce sont les choses les plus simples qui sont les meilleurs

il faut créer une instance de la windows qui contient le control se que je croyais faire en écrivant

Windows Fchat InstanceFchat = new Fchat();

en fait c le type de type de la fenetre qui heberge le control qu' il faut déclarer pour l' instance crée donc c' est :

Fchat InstanceFchat = new Fchat();
InstanceFchat.chatcontrol1 = etc...



et voila cooooooooool
@ bientôt

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 216 internautes nous ont dit merci ce mois-ci

Commenter la réponse de dragonroot
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
0
Merci
Salut,

C'est possible en VB.net car les mecs de VB6 ont ralés !
Mais d'un point de vu objet, ce n'est pas correct !

Il faut que tu crées une propriété qui permettra à ta form (window2) d'y accéder.

public string MonText {
   get { return this.UserControlPerso2.Text;}
}


ensuite, tu fais ça :

Usercontrol_Perso1.chat = window2.MonText;



Sébastien FERRAND
Lead Developpeur
Microsoft Visual C# MVP 2005 - 2009
Commenter la réponse de sebmafate
Messages postés
10
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
30 janvier 2010
0
Merci
merci avant tout
malheureusement j ai déja eu cette réponse sur msdn
je ne suis pas en trein d' écrire le code pour crée ces Usercontrols,ils sont issu d' une dll que j ai concu en c#.le but de ces controls est d' avoir
control1 une interface graphique de connection
control2 une interface de chat
control3 une interface pour recevoir image
control4 une interface video

ils fonctionnent donc ensemble c pouquoi a la manière de C4F

dans un nouveau projet c# WPF j' ai donc déposé mes controls sur des fen^tres différentes

a présent pour que c control puissent fonctionner ensemble dans mon projet je dois simplement les liés entre eux

le UsercontrolManager1 dans ma fenêtre principale comprend plusieur membres propriété Chat,Video,audio,Image accecible
et qui permettent de spécifier avec quel control il doivent travailler

je me repète mais en visual basic il sufisait de faire ca

ControlNetwormanager.chat= windows2.controlchat1

ControlNetwormanager.chat= windows2.controlchat1
ControlNetworkmanager.Video= Windows3.ControlVideo


et le branchement était ok

du coup je comprends pas l' explication
Commenter la réponse de dragonroot
Messages postés
10
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
30 janvier 2010
0
Merci
heu , se serait un truc du genre

si Control Networkmanager1 est dans Windows1.xaml
code fichier windows1.cs
Networmanager1.chat = Windows2.ChatControl1


Dans WinDows2.xaml se trouve ChatControl1
code fichier Windows2.cs
public UserControl ChatControl1 {
   get { return this.ChatControl1;}
}


j'pense pas que ca fonctionne ca
Commenter la réponse de dragonroot
Messages postés
10
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
30 janvier 2010
0
Merci
vien de faire un essai avec juste un control texbox1 dans windows1 et textbox dans windows 2 en visual c# express wpf

marche pas

code windwos1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace aeffacer02
{
    /// <summary>
    /// Logique d'interaction pour Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
           textBox2 .Text = Window2.   // TexBox1  n' apparait pas dans Intelligence
       
        }



dans windwos2.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;

namespace aeffacer02
{
    /// <summary>
    /// Logique d'interaction pour Window2.xaml
    /// </summary>
    public partial class Window2 : Window
    {
        public Window2()
        {
            InitializeComponent();
          
        }

        public String  MonText
        {
            get { return this.textBox1 .Text ; }
        }

    }
}
Commenter la réponse de dragonroot
Messages postés
10
Date d'inscription
lundi 17 septembre 2007
Statut
Membre
Dernière intervention
30 janvier 2010
0
Merci
heu me suis tromper,

dans le code Windows1.cs

textBox2 .Text = Window2.Montext 


//intellicense ne voit pas toujours pas la string Montext
Commenter la réponse de dragonroot
Messages postés
7
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
20 août 2010
0
Merci
Bonjour, j'ai une problème semblable, je ne sais pas si je doit faire un nouveau sujet ?

Dans mon cas, c'est une app WPF / C#. J'ai une MainWindow qui contient un ItemControl et un Label

MainWindow.xaml
Code XAML :
...
<Label Name="lPoste" />


<DataTemplate>
<Frame x:Name="frame" Source="{Binding XPath=@Source}"/>
</DataTemplate>


<TranslateTransform/>



uc_View1.xaml
Code XAML :

<Grid>

</Grid>


Dans le MainWindow le contenu du ItemControl change pour afficher le contenu de ucView1, ucView2, etc. Le changement ce fait avec des balises <storyboard> et une animation visuel. Cette parti fonctionne bien. Mais je ne peux pas accéder a MainWindow.lPoste a partir du button de ucView1.

Comme les user_control ne sont pas instancié dans le code C#. l'exmple

Fchat InstanceFchat = new Fchat();
InstanceFchat.chatcontrol1 = etc...

ne s'applique pas, puisque qu'il créer un nouvel objet et que les propriété que je change ne s'applique pas a l'objet qui existe déjà et est visible à l'écran. Donc comment puis-je changé la propriété MainWindow.lPoste.content = "Nouveau nom"; a partir de uc_View1.b_ok (onclick) ?
Commenter la réponse de DCTerreur