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

XAML/C#:页面/属性样式更改效率,c#,wpf,xaml,C#,Wpf,Xaml,我目前正在从事一个WPF项目,我在项目的某个方面不知道如何高效地创建解决方案 问题: 在我的程序中,我计划实现UI版本(暗模式、亮模式等)。基本上只是UI颜色偏好。但是,我不确定使用其他UI功能的最佳方式 到目前为止,我已经在APP.XAML中根据各个属性(如文本框和矩形)为每个UI首选项设置了样式,并将常规样式放在要显示的各个页面中 UI更改需要保存在显示的相同XAML文件中,以便可以实现事件。我相信这需要通过使用APP.XAML(我已经在使用它)来完成。但是,显示UI更改的最佳方式是什么?我

我目前正在从事一个WPF项目,我在项目的某个方面不知道如何高效地创建解决方案

问题: 在我的程序中,我计划实现UI版本(暗模式、亮模式等)。基本上只是UI颜色偏好。但是,我不确定使用其他UI功能的最佳方式

到目前为止,我已经在APP.XAML中根据各个属性(如文本框和矩形)为每个UI首选项设置了样式,并将常规样式放在要显示的各个页面中

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


谢谢

在回答一些问题和陈述时:

  • 标准模板(请参阅:)使用主题,因此这将是遵循逻辑的第一步
  • 虽然模板必须位于Generic.xaml中,但在资源字典中使用模板和颜色来维护单独的文件可能更容易
  • 不要使用事件,使用命令和绑定。如果需要使用事件,不要在XAML中连接它们,而是在控件的OnApplyTemplate中连接它们。这样,模板就可以调出,并且不再强制模板提供特定的控件/事件,因为OnApplyTemplate可以搜索控件,如果找不到则跳过它
  • 至于切换:根据经验,我发现在单独的文件中定义多个颜色/笔刷/资源集更容易。为这些颜色和笔刷指定相同的名称(例如,HighlightBrush、ButtonBorder或CheckBoxCheckGlyph)。根据主题,加载不同的资源文件。模板将简单地引用这些资源名称(如果要启用实时切换或StaticResource以在重新启动窗口/应用程序时切换,请使用DynamicSource)

避免提出主要基于观点的问题。顺便说一句,这里的关键词是主题。我不认为这是基于观点的。这是关于在XAML中找到完成任务的最快方法。每个答案都可以被测试,并给出一个可测量的值,与其他答案相比较,而不是像“你喜欢java还是C++更好”这样的问题。谢谢你的回答!这非常有用!在“OnApplyTemplate”上,您引用的是将更改xaml属性样式的事件,还是按钮单击之类的事件?当您创建自定义控件(不是UserControl!)时,您还将在generic.xaml文件中为该控件创建模板。在控件的C#代码中,您可以覆盖OnApplyTemplate并尝试查找控件及其事件。见: