You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF中如何在C#代码中获取DynamicResource资源

在C#代码中获取WPF DynamicResource的值

要获取XAML中DynamicResource对应的InvoiceCounterText值并存为字符串,你可以使用WPF控件或应用程序的FindResource或TryFindResource方法,具体实现如下:

方法一:使用FindResource(直接获取,找不到会抛异常)

如果确定资源InvoiceCounterText一定存在,可以直接用FindResource方法,强制转换为字符串:

// 在窗口/用户控件的后台代码中
string invoiceCounterText = (string)FindResource("InvoiceCounterText");

如果资源定义在应用程序全局(比如App.xaml),也可以通过Application类获取:

string invoiceCounterText = (string)Application.Current.FindResource("InvoiceCounterText");

方法二:使用TryFindResource(安全获取,找不到返回null)

如果不确定资源是否存在,推荐用TryFindResource,它不会抛出异常,返回null时可以做容错处理:

// 在窗口/用户控件的后台代码中
object resourceObj = TryFindResource("InvoiceCounterText");
string invoiceCounterText = resourceObj as string;

// 检查是否获取成功
if (invoiceCounterText != null)
{
    // 这里处理获取到的字符串
}

同样,全局资源也可以这样获取:

object resourceObj = Application.Current.TryFindResource("InvoiceCounterText");
string invoiceCounterText = resourceObj as string;

注意事项

  • 确保资源InvoiceCounterText的实际类型是字符串,否则类型转换会失败(FindResource会抛InvalidCastException,as转换会返回null)。
  • DynamicResource是动态绑定的,资源值后续发生变化时,通过上述方法获取的是当前时刻的最新值,如果需要监听资源变化,可以结合ResourceChanged事件处理。

内容的提问来源于stack exchange,提问作者Schecher_1

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 14:40:34