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
相关产品推荐
相关产品推荐

