C# 如何使您的XAML视图灵活且可供用户自定义?
我们的经理希望我们正在开发的WPF应用程序能够为用户完全定制。假设页面上有一个文本框。他希望用户能够将其放置在他想要的任何位置,使其具有他想要的任何颜色或字体大小,等等。现在的实现是将每个属性存储在SQL数据库中,然后在代码中构建视图C# 如何使您的XAML视图灵活且可供用户自定义?,c#,wpf,xaml,C#,Wpf,Xaml,我们的经理希望我们正在开发的WPF应用程序能够为用户完全定制。假设页面上有一个文本框。他希望用户能够将其放置在他想要的任何位置,使其具有他想要的任何颜色或字体大小,等等。现在的实现是将每个属性存储在SQL数据库中,然后在代码中构建视图 在我看来,这是一个糟糕的实现,因为它减慢了整个过程。当我浏览页面时,至少有10秒的加载时间,代码将获取所有属性,将它们转换为对象,将对象实现为视图,然后创建该视图。我想一定有更好的方法,因为它占用了太多的时间和资源。有更好的实现方法吗?有很多方法可以做到这一点,但
在我看来,这是一个糟糕的实现,因为它减慢了整个过程。当我浏览页面时,至少有10秒的加载时间,代码将获取所有属性,将它们转换为对象,将对象实现为视图,然后创建该视图。我想一定有更好的方法,因为它占用了太多的时间和资源。有更好的实现方法吗?有很多方法可以做到这一点,但是如果你需要“一切都可以改变”,那么。。有一种快速的方法可以做到这一点,即使没有任何外部工具 默认情况下,XAML被编译并包含在.exe/.dll中,但XAML可以从文件/字符串/任何内容动态加载。将XAML放在一个文本文件中(它已经存在),将编译选项更改为不编译它,而是包含为“content”和“copy always”,动态加载该文件() 现在用户可以编辑XAML,应用程序将监听它 当然:
- 每次更改文件后,都需要重新加载/重新启动app/window/etc
- 他们现在可以更改UI层中的所有内容
- 他们必须正确编辑文件,他们可能需要一些基本的培训 <> LI>你的应用程序可能会变得更复杂,因为现在很难在UI上找到正确的控件,但是如果你使用VM和绑定和命令,那么你对这个问题本质上是安全的(如果你不使用这个方法,那么……考虑开始)
Backround=“White”
,忽略样式。接下来发生的是100个关于触发器不工作的bug报告。另一方面,Visual Studio IDE是可定制环境的一个很好的例子(具有可移动和可固定的窗口以及一个很好的工具\Options\environment\Fonts and Color settings对话框)@ASh:当前的方法也可以这么说-只需想象用户编辑配置数据库并将按钮移动到位置(+34000,+23000)或设置背景:白色和文本颜色:白色烟雾。考虑到[管理者,谁]希望用户能够将[控制]放置在他想要的任何位置,使其具有他想要的任何颜色或字体大小等,这实际上是一种低成本、低努力的方式,如果他们真的希望这样做的话(他们的“用户”实际上可能有时间和技术技能,对吧?),或者让经理重新考虑他的方法和要求……此外,它消除了通过数据库处理所有定制的巨大复杂性,还允许像git这样的vcs轻松跟踪/分支定制,这对于(手动?)处理的基于数据库的存储来说是非常麻烦和容易出错的(可能是作为屏幕键值表保存的地方。)我去过那里,我见过它,除非花费大量精力为用户提供某种WYSIWYG ui编辑器,否则我实际上会选择这种方式(或类似方式,即他们可以编辑过滤/简化的xaml,然后将其加入/合并到原始用户中,等等,大量选项)