[英]Reference object in App.xaml.cs in new window
我正在嘗試創建一個對象,該對象將保存應用程序在運行時全局需要的所有值。 我以為我會使用App.xaml.cs,因為如果我正確理解該代碼是首先運行並保存在內存中的,那么這就是應用程序的核心。
在本文底部的代碼的.inProgress
部分獲取此錯誤:
'App'不包含'inProgress'的定義,找不到可以接受類型為'App'的第一個參數的擴展方法'inProgress'(您是否缺少using指令或程序集引用?)
App.xaml.cs
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
//Startup
Window main = new MainWindow();
main.Show();
//Bind Commands
Classes.MyCommands.BindCommandsToWindow(main);
//Create runtime objects
var runtime = new runtimeObject();
}
public static explicit operator App(Application v)
{
throw new NotImplementedException();
}
}
/// <summary>
/// Global values for use during application runtime
/// </summary>
public class runtimeObject
{
private bool _inProgress = false;
public bool inProgress
{
get { return _inProgress; }
set { _inProgress = value; }
}
}
在這里,我試圖訪問runtime
對象,以便可以看到應用程序是否可以關閉,請記住,可能不需要關閉,但是除了關閉窗口之外,我還需要執行類似的任務。
類> Commands.cs
bool inProgress = (System.Windows.Application.Current as App).inProgress;
看來您需要添加屬性才能訪問運行時對象。 當前,您只是在OnStartup方法中創建實例。 將該實例分配給屬性:
public partial class App : Application
{
public static runtimeObject runtime { get; set; };
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
//Startup
Window main = new MainWindow();
main.Show();
//Bind Commands
Classes.MyCommands.BindCommandsToWindow(main);
// Create runtime objects
// Assign to accessible property.
runtime = new runtimeObject();
}
public static explicit operator App(Application v)
{
throw new NotImplementedException();
}
}
然后從您的命令邏輯訪問屬性:
public static void CloseWindow_CanExecute(object sender,
CanExecuteRoutedEventArgs e)
{
if (App.runtime.inProgress == true)
{
e.CanExecute = false;
}
else
{
e.CanExecute = true;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.