XAML / C#:页面/属性样式更改效率

时间:2018-07-23 16:24:40

标签: c# wpf xaml

我目前正在WPF项目中工作,并且在该程序的某个方面,我不知道如何有效地创建解决方案。

问题: 在我的程序中,我计划实现UI版本(深色模式,浅色模式等)。基本上只是UI颜色首选项。但是,我不确定我可以使用其他UI功能的最佳方式。

到目前为止,我已经基于诸如文本框和矩形之类的各个属性为APP.XAML中的每个UI首选项设置了样式,并将常规样式放入了要显示的各个页面中。

UI更改需要保留在同一SHOWN XAML文件中,以便可以实现事件。我相信这需要通过使用APP.XAML(我已经在使用它)来完成。但是,显示UI更改的最佳方法是什么?我应该创建整个页面样式吗?根据样式分别更改每个属性?还是有一些更好的方法可以有效地完成UI更改。

谢谢!

1 个答案:

答案 0 :(得分:2)

回答一些问题和陈述:

  • 标准模板(请参阅:https://stackoverflow.com/a/45603437/563088)使用主题,因此这是遵循逻辑的第一步。
  • 尽管模板必须位于Generic.xaml中,但使用资源词典中的模板和颜色来维护单独的文件可能会更容易
  • 不要使用事件,请使用命令和绑定。如果需要使用事件,请不要在XAML中关联事件,而应在控件的OnApplyTemplate中关联它们。这样一来,模板就可以换出,并且不再需要模板来提供特定的控件/事件,因为OnApplyTemplate可以搜索控件并在找不到时跳过它。
  • 关于切换:根据经验,我发现在单独的文件中定义多个颜色/画笔/资源集更容易。给这些颜色和画笔起相同的名称(例如HighlightBrush,ButtonBorder或CheckBoxCheckGlyph)。根据主题,您可以加载其他资源文件。模板将仅引用这些资源名称(如果要启用实时切换,则使用DynamicResource;如果要在重新启动窗口/应用程序时启用StaticResource,则使用静态资源)