3つの異なるウィンドウHome.xaml, Name.xaml, Config.xam
lを使用して、c#でWPFアプリケーションを作成しました。他の両方の形式で使用できる変数をHome.xaml.cs
で宣言します。 public string wt = "";
を試してみましたが、うまくいきませんでした。
3つのフォームすべてで使用できるようにするにはどうすればよいですか?
適切な方法は、特にXBAPPに移動したい場合は、それを次の場所に保存することです。
Application.Current.Properties
これは、Dictionaryオブジェクトです。
ウィンドウとユーザーコントロールの間で値を渡したり、静的クラスを作成してWPF内の既存の機能を複製したりする必要がないようにするには、次のようにします。
App.Current.Properties["NameOfProperty"] = 5;
string myProperty = App.Current.Properties["NameOfProperty"];
これについては前述しましたが、構文は少しずれていました。
これにより、アプリケーション内で実行される任意のコードからアクセスできる、アプリケーション内のグローバル変数が提供されます。
静的プロパティを使用できます。
public static class ConfigClass()
{
public static int MyProperty { get; set; }
}
編集:
ここでのアイデアは、すべての「共通データ」、通常は構成を保持するクラスを作成することです。もちろん、任意のクラスを使用できますが、静的クラスを使用することをお勧めします。このプロパティには次のようにアクセスできます。
Console.Write(ConfigClass.MyProperty)
ここでできることは2つあります(特に、最初に頭に浮かぶのは2つだけです)。
Home.xaml.csで変数を静的にすることができます
public static string Foo = "";
変数を3つすべてのフォームに渡すだけです。
私は#2に進み、必要に応じて、必要なデータを含む別のクラスを作成します。次に、各クラスはデータにアクセスできます。
App.xaml:
<Application x:Class="WpfTutorialSamples.App"
xmlns="http://schemas.Microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.Microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;Assembly=mscorlib"
StartupUri="WPF application/ResourcesFromCodeBehindSample.xaml">
<Application.Resources>
<sys:String x:Key="strApp">Hello, Application world!</sys:String>
</Application.Resources>
コードビハインド
Application.Current.FindResource("strApp").ToString()