Comment manipuler un objet de la fenêtre d'une autre classe dans WPF
Je suis nouveau dans WPF et C#. Je sais que beaucoup de VB.NET je suis habitué à la façon quand je l'appelle un objet de formulaire comme des zones de texte, etc. Je suis de l'appeler à partir d'un autre formulaire. Maintenant, je suis en utilisant WPF, je suis confus. Parce que j'ai une Fenêtre Principale. Et je tiens à ajouter et élément d'une liste dans la Fenêtre Principale à partir d'une Classe. Dans VB.Net juste comme cela.
IN FORM2
Form1.Textbox.Text = "";
Où je ne peux pas le faire en WPF. Quelqu'un peut s'il vous plaît Aider moi. Merci!
Vous pouvez, si vous avez la référence à l'objet window.
Comment puis-je le faire?
Dépend, d'une façon serait de transmettre cette référence à un constructeur de la classe et de le stocker dans un champ. Et vous avez eu à faire quelque chose de similaire dans VB.NET trop.
Comment puis-je le faire?
Dépend, d'une façon serait de transmettre cette référence à un constructeur de la classe et de le stocker dans un champ. Et vous avez eu à faire quelque chose de similaire dans VB.NET trop.
OriginalL'auteur Sam Araja | 2011-08-28
Vous devez vous connecter pour publier un commentaire.
WPF, windows définis dans le code XAML ont leurs contrôles accessibles au public à partir d'autres classes et formes, sauf si vous les marquer avec la x:FieldModifier attribut privé.
Par conséquent, si vous faites une instance de votre fenêtre principale accessible dans une autre classe, d'une Fenêtre ou n'importe quoi d'autre, vous serez en mesure de remplir les contrôles à l'intérieur de cette deuxième catégorie.
Un scénario particulier, c'est quand vous voulez mettre à jour le contenu d'un contrôle dans votre fenêtre principale d'un enfant de la fenêtre que vous avez ouverte sur le dessus de cela. Dans ce cas, vous pouvez régler l'enfant de la fenêtre de propriété du Propriétaire de l'actuel, de la fenêtre principale, pour y accéder, tandis que l'enfant est visible. Par exemple, disons que vous avez défini ces deux fenêtres:
et
chacun dans son propre fichier XAML.
Dans
MainWindow
le code de derrière, à l'intérieur du bouton, cliquez sur gestionnaire, vous montrer une instance deAnotherWindow
comme d'un dialogue et l'ensemble de sesOwner
propriété de MainWindow de l'instance:Maintenant, vous pouvez accéder à la
MainWindow
'instance deAnotherWindow
Propriétaire de la propriété, afin d'ajouter un nouvel élément à laListBox
de contrôle défini, cliquez sur le bouton gestionnaire deAnotherWindow
le code de derrière:Il ajoute simplement un nouveau nombre aléatoire à la
ListBox
, afin de montrer comment le code accède et modifie les données du contrôle dansMainWindow
.OriginalL'auteur luvieere
Pur WPF solution, mais aussi peut-être plus simple dans votre cas, est à l'aide d'un La Liaison de données dans WPF.
Toute forme de contrôle est lié à certaines données sur ModelView (pur MVVM approche) ou de données (plus ou moins comme vous pouvez le faire dans WindowsForms). Donc, la "seule" chose que vous avez à faire est de lire/écrire des données liées aux contrôles d'INTERFACE utilisateur de ce formulaire.
Par exemple, vous avez
TextBox
sur Windows et que vous voulez lire des données à partir d'elle.Cette
TextBox
est lié à certainsstring
propriété de la classe qui est responsable de la tenue des données pour les contrôles sur le formulaire (juste un exemple, dans le monde réel pourrait être de 1000 autres solutions, basée sur le développeur de décisions). Donc, ce que vous avez besoin, est pas - à-dire: "fenêtre de zone de texte" et après l'avoir luTextBox's
contenu, mais il suffit de lire liéstring
de la propriété.Sûr que c'est très simple description d'un truc. Mais juste pour vous donner un indice. Suivez le databinding lien fourni ci-dessus pour en savoir plus sur ce genre de choses. Ne pas peur de beaucoup de choses là, c'est, après tout, n'est pas une idée compliquée et assez intuitive. Pour faire ce genre de choses à travailler simplement au cas où vous n'aurez pas besoin de faire d'énormes efforts en moi. Le truc devient vraiment complexe lorsque vous vous retrouvez dans des applications du monde réel.
OriginalL'auteur Tigran
Cela permet d'obtenir toutes les fenêtres actives:
OriginalL'auteur brendan botond