我知道有很多问题表明资源字典和用户控件都可以用来分解和组织大型xaml文件,但是它们似乎都没有考虑到使用它们的优缺点.
我的问题是使用资源字典与用户控件组织大型xaml文件的优缺点是什么?
使用要在其中封装行为的UserControl(或自定义控件).按行为我的意思不仅仅是交互逻辑,例如具有自定义双击行为的列表框,而是数据模型,例如显示Person的详细信息的控件,因此需要PersonToDisplay属性.特定于该UserControl的资源将放在控件的Resources字典中.
使用您想要共享资源的ResourceDictionary.例如,如果您有一组要在多个位置使用的画笔(并希望有一个中心位置来更新它们),那么它将成为ResourceDictionary的候选者.
有些情况可以纯粹使用资源实现,但是您可能希望将它们打包为控件,以便在使用时更容易理解.例如,如果你有一个按钮,当鼠标悬停在它上面时会被设置为闪烁,你可能会觉得用户更容易编写(和读取)<local:AnnoyingButton />而不是<Button Style="{StaticResource AnnoyingButton}" />(样式在AnnoyingButton.xaml资源字典中),即使整个事情实际上可能是用模板和触发器完成的,而不是实际的代码.在这里,我倾向于在创建控件方面犯错,因为(a)如果我发现我需要稍后添加代码并且(b)它使我不得不编写ResourceDictionary.MergedDictionaries元素,它会更健壮.这是一个判断电话.