.net - 资源字典与用户控件在组织大型 xaml 文件方面的优缺点是什么?

标签 .net wpf xaml

我知道有许多问题表明资源字典和用户控件都可用于分解和组织大型 xaml 文件,但似乎没有一个问题涉及使用 on 的优缺点。

我的问题是使用资源字典与用户控件来组织大型 xaml 文件的优缺点是什么?

最佳答案

在您想要封装行为的地方使用 UserControl(或自定义控件)。我所说的行为不仅仅是交互逻辑,例如具有自定义双击行为的列表框,还包括数据模型,例如显示人员详细信息的控件,因此需要 PersonToDisplay 属性。特定于该 UserControl 的资源将进入控件的 Resources 字典。

在您想要共享资源的地方使用 ResourceDictionary。例如,如果您有一组要在多个位置使用的画笔(并且希望有一个中心位置来更新它们),那么这将是 ResourceDictionary 的候选对象。

有些情况可以完全使用资源来实现,但您可能希望将它们打包为控件,以便在使用时更容易理解。例如,如果您有一个样式为在鼠标悬停时闪烁的按钮,您可能会觉得用户更容易书写(和阅读)<local:AnnoyingButton />而不是 <Button Style="{StaticResource AnnoyingButton}" /> (其中样式在 AnnoyingButton.xaml 资源字典中),即使整个事情实际上可以使用模板和触发器完成,而没有实际代码。在这里,我倾向于在创建控件方面犯错,因为 (a) 如果我发现以后需要添加代码,它会更加健壮,并且 (b) 它可以让我不必编写 ResourceDictionary.MergedDictionaries元素。虽然这是一个判断电话。

关于.net - 资源字典与用户控件在组织大型 xaml 文件方面的优缺点是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4973868/

相关文章:

wpf - 触发器中的空字符串检查

c# - ObservableDictionary 绑定(bind)到组合框显示值(MVVM)

c# - 将小数转换为不带逗号或点的字符串

.net - 如何创建 MSA ID 和密码以使用 SDK 创建 Azure Bot 服务

c# - Rabbitmq 扇出交换 C#

c# - 如何查找 List<Dictionary<string, object>> 中的重复值?

WPF:继承自 HeaderedContentControl

wpf - 在WPF网格中,如何在鼠标位置找到“行和列”?

c# - 将图像加载到内存中的最佳方式?

c# - 应用栏中的多个按钮