从代码后面访问类的XAML实例
本文关键字:XAML 实例 访问 代码 | 更新日期: 2023-09-27 18:17:49
我曾经在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.xaml.cs中时,App.runtime
用于工作。
Classes> Commands.cs
public static void CloseWindow_CanExecute(object sender,
CanExecuteRoutedEventArgs e)
{
if (App.runtime.inProgress == true)
{
e.CanExecute = false;
}
else
{
e.CanExecute = true;
}
}
我现在如何从命令中引用我的类实例?
你可以在代码的任何地方使用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。