Ответ 1
Правильный способ, особенно если вы когда-либо хотите перейти на XBAPP, заключается в его сохранении в
Application.Current.Properties
который является объектом словаря.
Я создал приложение WPF в С# с тремя разными окнами, Home.xaml, Name.xaml, Config.xam
l. Я хочу объявить переменную в Home.xaml.cs
, которую я могу использовать в обеих других формах. Я пробовал делать public string wt = "";
, но это не сработало.
Как я могу использовать его для всех трех форм?
Правильный способ, особенно если вы когда-либо хотите перейти на XBAPP, заключается в его сохранении в
Application.Current.Properties
который является объектом словаря.
Вы можете использовать статическое свойство:
public static class ConfigClass()
{
public static int MyProperty { get; set; }
}
Edit:
Идея здесь заключается в создании класса, в котором содержатся все "общие данные", как правило, конфигурации. Конечно, вы можете использовать любой класс, но предлагаете использовать статический класс. Вы можете получить доступ к этому свойству следующим образом:
Console.Write(ConfigClass.MyProperty)
Чтобы избежать необходимости передавать значения между окнами и пользовательскими элементами управления или создавать статический класс для дублирования существующих функций в WPF, вы можете использовать:
App.Current.Properties["NameOfProperty"] = 5;
string myProperty = App.Current.Properties["NameOfProperty"];
Это было упомянуто выше, но синтаксис был немного выключен.
Это обеспечивает глобальные переменные в вашем приложении, доступные из любого кода, запущенного внутри него.
Здесь вы можете сделать две разные вещи (среди прочего, это только те, которые сначала приходят на ум).
Вы можете сделать переменную static на Home.xaml.cs
общедоступная статическая строка Foo = "";
Вы можете просто передать переменную во все три формы.
Я бы пошел С# 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()