我曾经在app.xaml.cs
中定义了自定义类的实例,因此我可以在应用程序的任何位置访问它。我现在怎么改变它,以便在我的应用程序资源中创建我的类的实例。
的App.xaml
<Application x:Class="Duplicate_Deleter.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Duplicate_Deleter">
<Application.Resources>
<local:runtimeObject x:Key="runtimeVariables" />
</Application.Resources>
</Application>
App.xaml.cs 这是班级。
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
namespace Duplicate_Deleter
/// <summary>
/// Global values for use during application runtime
/// </summary>
public class runtimeObject
{
//Can the application be closed?
private bool _inProgress = false;
public bool inProgress
{
get { return _inProgress; }
set { _inProgress = value; }
}
//Selected folder to search in
private string _fromFolder = "testing string";
public string fromFolder
{
get { return _fromFolder; }
set { _fromFolder = value; }
}
}
}
我现在的问题是,我需要能够在我的命令命名空间中的代码中访问该类的实例。您可以在下面看到其中一个命令,App.runtime
用于在实例位于App.xaml.cs中时工作。
课程&gt; Commands.cs
public static void CloseWindow_CanExecute(object sender,
CanExecuteRoutedEventArgs e)
{
if (App.runtime.inProgress == true)
{
e.CanExecute = false;
}
else
{
e.CanExecute = true;
}
}
我现在如何从命令中引用我的类实例?
答案 0 :(得分:2)
您可以在代码中的任何位置使用TryFindResource:
public static void CloseWindow_CanExecute(object sender,
CanExecuteRoutedEventArgs e)
{
// Find the resource, then cast it to a runtimeObject
var runtime = (runtimeObject)Application.Current.TryFindResource("runtimeVariables");
if (runtime.InProgress == true)
{
e.CanExecute = false;
}
else
{
e.CanExecute = true;
}
}
如果找不到资源,它将返回null。您可以添加空检查以避免InvalidCastException。