2012-04-05 18 views
0

Verwenden von WPF-Anwendung und WPF UserControl.XML-Pass-Parameter in UserControl

Ich habe eine Benutzersteuerung, die in der Hauptanwendung mehrere Male ist. Es gibt einen Knopf in diesem usercontol und auf klicken, wird es den Inhalt eines globalen String zeigt variable Properties.Settings.Default.StringA; (wobei „stringA“ ist nur ein Beispiel in dieser explenation)

Zum Beispiel in diesen globalen Einstellungen a i habe Zeichenfolge parameterNameA und parameterNameB.

Ich sollte so etwas wie dies auf der Hauptanwendung machen:

Usercontroller Beispiel 1: <local:UserControl1 stringVariable="parameterNameA" />

Usercontroller Beispiel 2: <local:UserControl1 stringVariable="parameterNameB" />

Im Usercontroller ist sollte wie folgt erhalten:

public string stringVariable 
{ 
    get 
    { 
     return stringVariable; 
    } 
    set 
    { 
     settingThis = value; 
    } 
} 

Aber th ist man macht eine Schnur daraus. Aber was ich will ist, dass es den richtigen Parameter Properties.Settings.Default.StringA; bekommen, wo "StringA" wäre die "ParameterNameA" oder "ParameternameB"

wirklich in diesem stecken. Hat jemand Ideen?

============================================= ======

EDIT 1 - Überarbeitung der tht Frage besser zu erklären

ich WPF-Anwendung und WPF Usercontrol verwenden.

Ich habe ein UserControl, das eine Schaltfläche enthält. Das Drücken dieser Taste funktioniert: MessageBox.Show(Properties.Settings.Default.messageA);

Also messageA ist eine der globalen String-Variablen.

jetzt im dieses Usercontrol auf dem aplligation Fenster setzt die XML-Trog:

<local:UserControl1 stringVariable="messageA" />

Aber im nicht einmal dort setzen, ich will es auf dem Anwendungsfenster mehrmals setzen. Aber wie Sie verstehen werden, wird durch Klicken auf die Schaltfläche immer messageA angezeigt.

Also was soll ich versuche: ich in dem Usercontrol etwas hinzufügen will, definieren würde, welche Botschaft, wenn Properties.Settings.Default.messageA genannt zu zeigen, aber für die zweite Instanz im Anwendungsfenster, nicht ich will es messageA zeigen, ich will es Nachricht anzeigenB. So im Anwendungsfenster, ich allerdings etwas wie folgt aus:

<local:UserControl1 stringVariable="messageA" />

<local:UserControl1 stringVariable="messageB" />

Also innerhalb der Usercontroller, verstehen sollte es irgendwie, dass, wenn stringVariable="messageB" gesetzt ist, sollte es nennen Properties.Settings.Default.messageB und nicht Properties.Settings.Default.messageA

Ich hoffe, ich habe jetzt ein wenig besser erklärt.

+0

Ich habe diese Frage etwa 4 mal gelesen und es ist immer noch verwirrend. Bitte überarbeiten Sie und machen Sie das Problem klarer. –

+0

ok, bearbeitet, um weitere Informationen hinzuzufügen. Ich hoffe wirklich, es ist jetzt klarer. – Dante1986

+0

Auch mir nicht klar. – Paparazzi

Antwort

0

Wenn ich das richtig verstanden:

Warum in Ihrem Benutzersteuerung über einen Parameter in seinem Konstruktor nicht nur den Inhalt Ihrer Properties.Settings.Default.StringX passieren, halten Sie es als eine Eigenschaft in und es verwenden, wo immer Sie wollen?

0

Ich denke, ich verstehe, was Sie hier wollen, aber ich bin nicht 100% sicher wegen all der Flusen in Ihrem Code. Wenn ich Sie richtig verstehe, möchten Sie den Wert der globalen Einstellung anstelle des Namens verwenden. Oder haben Sie eine Möglichkeit, den Wert aus dem Namen der Einstellung zu ziehen ...

Sie können den Namen der Einstellungsvariablen noch speichern, aber Sie müssen einfach den ConfigurationManager verwenden, um die Einstellung basierend auf dem Schlüssel (Name). Stellen Sie sicher, dass Sie die erforderlichen Referenzen enthalten und Anweisungen verwenden.

public string StringVariable { get; set; } 

public string SettingValue 
{ 
    get { return ConfigurationManager.AppSettings[StringVariable]; } 
}