2009-10-29 4 views
1

Je peux modifier/accéder aux contrôles et MessageBox facilement dans le fichier MainWindow.xaml.cs de mon application WPF. Cependant, lorsque je crée des dossiers et y ajoute des classes, je n'ai plus accès à MessageBox et je n'ai pas non plus vu les noms des contrôles dans la liste déroulante Intellisense.Accès aux propriétés MainWindow d'autres classes

(Cela semble tout à fait élémentaire mais je suis nouveau sur C# et WPF)

Répondre

1

Est-ce que vos classes ont le droit à l'aide déclaration que dans les nouvelles classes vous permettra d'accéder à la classe que vous essayez d'accéder vous avez-vous créé?

3

Un espace de noms doit être manquant. Vous pouvez faire quelque chose comme ceci:


MainWindow.cs:

using System; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; 

namespace YourNameSpaceHere 
{ 
    public partial class MainWindow : Window 
    { 
     internal static string message_ = string.Empty; 
     MainWindow() 
     { 
      InitializeComponent(); 
      SetupMessage(); 
     } 

     private void SetupMessage() 
     { 
      message_ = "Hello World!"; 
     } 
    } 
} 

OtherFile.cs:

using System; 
using System.Text; 
using System.Windows; 
using System.Windows.Controls; //are you missing this namespace? 
namespace YourNameSpaceHere 
{ 
     public class Messaging 
     { 
      Messaging() 
      { 
       MessageBox.Show(MainWindow.message_); 
      } 
     } 
} 

Notez que j'utilise le même espace de noms dans chaque fichier et en utilisant le mot-clé interne, le message peut être accédé par n'importe quel élément tant qu'il se trouve dans le même espace de noms. J'espère que ça aide!

+0

J'avais aussi ce problème et j'ai utilisé la réponse de Partial. Il me manquait l'espace de noms suivant: using System.Windows.Controls; En outre, vous devez utiliser le mot-clé 'internal' comme dans l'exemple de Partial. – tone7

Questions connexes