2010-07-07 10 views
1

J'ai deux pages dans WPF. La page A contient tout mon code. La page B est censée être comme un panneau de contrôle où je clique sur les boutons pour faire fonctionner la fenêtre A. Le problème que je rencontre est que je veux faire des appels de fonction de B à A mais j'obtiens une erreur de portée.comment passer une référence à un objet via button_click dans WPF/C#

Dans le code ci-dessous, j'obtiens l'erreur spécifiquement sur l'objet axFlash.

namespace GoogleMapsFlashInWpf 

{

public partial class ButtonPage : Page 
{ 
    public ButtonPage() 
    { 
     InitializeComponent(); 
    } 

    private void ClearMarkersButton(object sender, RoutedEventArgs e) 
    { 
     StackTrace asdf = new StackTrace(); 
     Console.WriteLine(asdf.GetFrame(0).GetMethod().Name.ToString() + " called from " + asdf.GetFrame(1).GetMethod().Name.ToString()); 
     XElement call = new XElement("invoke", 
       new XAttribute("name", "clearMarkers"), 
       new XAttribute("returntype", "xml")); 
     try 
     { 

      axFlash.CallFunction(call.ToString(SaveOptions.DisableFormatting)); 
     } 
     catch (Exception error) 
     { 
      Console.WriteLine(error.ToString()); 
     } 

    }//end ClearMarkersButton 
} 

}

+0

Qu'est-ce que axFlash? Où est votre autre classe? Quelle erreur obtenez-vous exactement? –

+0

Vous devrez fournir un peu plus d'informations. Quel genre d'erreur obtenez-vous? Et quel type d'objet est axFlash? – sbenderli

+0

axFlash est un objet flash. Je reçois cette erreur: "Erreur \t 1 Le nom" axFlash "n'existe pas dans le contexte actuel" – Paul

Répondre

0

L'erreur est juste ... l'objet axFlash n'existe pas dans le champ d'application de cette méthode. Vous devez faire d'axFlash un objet défini sous la classe ButtonPage. Ensuite, vous devez vous assurer que l'objet axFlash est défini avant que vous souhaitiez appeler cette fonction.

+0

Je voudrais idéalement appeler simplement la méthode située dans la fenêtre A. Comment ferais-je cela? – Paul

+0

Pour ce faire, vous devez d'abord ajouter une définition de la fenêtre A dans la fenêtre B. Ensuite, dans la fenêtre B, dans votre code, appelez Parent.axFlash.CallFunction. Notez que axFlash doit être visible pour le monde extérieur. – sbenderli