WPF中的ComponentResourceKey 标记扩展

主要为从外部程序集加载的资源定义和引用键。这使得资源查找功能可以在程序集内指定目标类型,而不是在程序集内指定显式的资源字典。

 XAML 属性用法(设置键,精简版)

<object x:Key="{ComponentResourceKey {x:Type targetTypeName}, targetID}" .../>

 

XAML 属性用法(设置键,详细版)

<object x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}" .../>

 

XAML 属性用法(请求资源,精简版)

<object property="{DynamicResource {ComponentResourceKey {x:Type targetTypeName}, targetID}}" .../>

 

XAML 属性用法(请求资源,详细版)

<object property="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type targetTypeName}, ResourceID=targetID}}" .../>

 

XAML 值

 targetTypeName   在资源程序集内定义的公共公共语言运行库 (CLR) 类型的名称

targetID      资源的键。在查找资源时,targetID 将与资源的 x:Key 属性类似

 

如上面的用法所示,{ComponentResourceKey} 标记扩展用法可以在下面的两个位置中找到:

在主题资源字典内对键的定义,如控件作者提供的那样。

当您重新模板化控件但希望使用控件主题提供的资源的属性值时,从数据集访问主题资源。

为了引用来自主题的组件资源,通常建议您使用 {DynamicResource},而不是 {StaticResource}。这展示在用法中。建议使用 {DynamicResource},因为用户可以更改主题本身。如果需要最适合控制用户支持该主题的意图的组件资源,则还应使您的组件资源引用成为动态。

TypeInTargetAssembly 标识存在于实际定义资源的目标程序集内的类型。无需知道 TypeInTargetAssembly 的确切定义位置,即可定义和使用 ComponentResourceKey,但是最终必须通过所引用的程序集来解析该类型。

ComponentResourceKey 的常见用法是定义之后将作为类成员公开的键。在该用法中,使用的是 ComponentResourceKey 类构造函数,而不是标记扩展。有关更多信息,请参见 ComponentResourceKey 或主题控件创作概述的“定义和引用主题资源的键”部分。

为了建立键和引用监控资源,特性语法通常用于 ComponentResourceKey 标记扩展。

所显示的精简语法依赖 ComponentResourceKey.ComponentResourceKey 构造函数签名和标记扩展的定位参数用法。给出 targetTypeName 和 targetID 的顺序非常重要。详细语法依赖于 ComponentResourceKey.ComponentResourceKey 默认构造函数,之后将按照与对象元素上的实际特性语法类似的方式设置 TypeInTargetAssembly 和 ResourceId。在详细语法中,属性的设置顺序无关紧要。这两种可供选择的语法(精简和详细)的机制以及二者之间的关系在标记扩展和 WPF XAML 主题中有更详细的介绍。

从技术上讲,targetID 的值可以是任何对象,它不一定是字符串。但是,WPF 中的最常见用法是使 targetID 值与属于字符串且此类字符串在 XamlName 语法中有效的窗体对齐。

ComponentResourceKey 可以在对象元素语法中使用。在这种情况下,必须同时指定 TypeInTargetAssembly 和 ResourceId 属性的值才能正确初始化该扩展。

在 WPFXAML 读取器实现中,对此标记扩展的处理由 ComponentResourceKey 类定义。

ComponentResourceKey 是标记扩展。当要求转义特性值应为非文本值或非处理程序名称时,通常会实现标记扩展,相对于只在某些类型或属性上放置类型转换器而言,此要求更具有全局性。XAML 中的所有标记扩展在其特性语法中都使用 { 和 } 字符,XAML 处理器通过这一约定确认标记扩展必须处理该特性。有关更多信息,请参见标记扩展和 WPF XAML

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将电子设备插入带电系统是终端应用程序的必要要求。通常这称为“热插拔”或“热插拔”,但也可称为“带电插拔”。在将电子设备插入带电系统并完全通电并运行之前,需要对热插拔有基本了解。没有中断。根据应用程序的不同,这些要求可能更具挑战性。例如,在热交换过程中可能需要维护I/O的状态。由于系统具有高性能、高可靠性和高速性,因此必须始终保持系统的正常运行。一个这样的应用程序是一个独立磁盘冗余阵列(RAID)存储系统,它为数据可靠性提供了高性能,并且始终保持通电和通电是必不可少的。另一个常见的例子是USB,在那里你可以插入和拔掉电源。   Spartan:registered:7和更新版本的Xilinx FPGA在性能和功能之间有着关键的平衡。本机热交换功能不是一项功能,因为这会影响性能,这意味着您在设计实时系统时必须特别小心。此上下文中的活动系统描述了已通电的系统。作为Xilinx FPGA的一个例子,每个FPGA家族都有各自独有的电源排序建议,在热插拔过程中仍然必须遵循这些建议。除了电源序列建议外,应用程序可能需要在热交换事件期间达到有效的信号完整性级别。外部电路可能需要满足有效信号完整性的I/O要求;因此,您必须了解哪些规则和限制限制了Xilinx FPGA的热插拔功能。如果需要热插拔,那么设计一个稳定可靠的系统将面临更大的挑战。此应用程序说明最好用作在热交换类型的应用程序中使用Xilinx FPGA时需要考虑的事项的清单。   热插拔检查表用作热插拔Xilinx FPGA的一般经验法则。请注意,特定的Xilinx FPGA系列的要求略有不同。这些特定于设备的要求列在特定于设备的热交换信息中。Xilinxfpgas具有相同的CMOS I/O结构,但有一些独特的旧设备是不同的。Xilinx高速串行收发器的I/O结构与GPIO不同,但一般指南仍适用于热插拔。如果存在更具体的详细要求,请查看设备数据表。
Windows Usb热插拔是指在Windows操作系统中,当USB设备插入或拔出时,系统能够自动检测并做出相应的响应。在程序中实现USB热插拔的功能,可以通过注册USB设备信息和监测USB设备插拔事件来实现。 在程序初始化时,可以通过注册USB设备信息来响应USB热插拔事件。这可以通过调用RegisterDeviceNotification函数来实现。在注册USB设备信息时,需要指定设备类型为DBT_DEVTYP_DEVICEINTERFACE,并传入相应的设备接口信息。具体的注册过程可以参考引用\[1\]中的代码示例。 另外,还可以使用第三方库来实现USB转串口设备的热插拔检测。例如,可以使用CH343PT库中的接口CH343PT_SetDevNotify来实现USB转串口设备的热插拔检测。具体的使用方法可以参考引用\[3\]中的介绍。 总结起来,Windows Usb热插拔可以通过注册USB设备信息和监测USB设备插拔事件来实现。具体的实现方法可以根据需求选择使用系统提供的函数或第三方库来完成。 #### 引用[.reference_title] - *1* [windows下USB检测插拔状态](https://blog.csdn.net/qq_22642239/article/details/110451792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [CH343PT库使用一>USB转串口设备的热插拔检测](https://blog.csdn.net/WCH_TechGroup/article/details/127514913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值