Comment atteinde un Usercontrol déposé dans Windows2.xaml depuis code WIndows1.c

Résolu
dragonroot Messages postés 10 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 30 janvier 2010 - 28 janv. 2010 à 14:34
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

7 réponses

dragonroot Messages postés 10 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 30 janvier 2010
30 janv. 2010 à 14:25
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
3
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
28 janv. 2010 à 15:24
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
0
dragonroot Messages postés 10 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 30 janvier 2010
28 janv. 2010 à 16:59
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
0
dragonroot Messages postés 10 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 30 janvier 2010
28 janv. 2010 à 17:13
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dragonroot Messages postés 10 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 30 janvier 2010
28 janv. 2010 à 17:40
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 ; }
        }

    }
}
0
dragonroot Messages postés 10 Date d'inscription lundi 17 septembre 2007 Statut Membre Dernière intervention 30 janvier 2010
28 janv. 2010 à 17:48
heu me suis tromper,

dans le code Windows1.cs

textBox2 .Text = Window2.Montext 


//intellicense ne voit pas toujours pas la string Montext
0
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, 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) ?
0
Rejoignez-nous