2017-01-30 50 views
-2

我们的经理希望我们正在开发的WPF应用程序能够为用户完全自定义。假设页面上有一个文本框。他希望用户能够将其放在任何他想要的位置,使其具有任何颜色或字体大小,等等。现在,实现此操作的目的是将每个属性存储在SQL数据库中,然后在您的后面的代码。如何使您的XAML视图灵活且可供用户自定义?

在我看来这是一个糟糕的实现,因为它会降低整个过程。当我浏览页面时,加载时间至少为10秒,后面的代码获取所有属性,将它们转换为对象,将对象实现到视图中,然后创建该视图。我认为必须有更好的方式来做到这一点,因为它吸收了很多时间和资源。有没有更好的实现呢?

回答

2

有很多方法可以做到这一点,但是如果你需要“一切都可以改变”,那么......有一种快速的方法来做到这一点,甚至没有任何外部工具。

默认情况下,XAML被编译并包含在.exe/.dll中,但XAML可以从文件/字符串/任何内容动态加载。把XAML放在一个文本文件中(它已经是),改变编译选项不编译它,但包括“内容”和“总是复制”,动态加载该文件(XmlReader.Load method)。

现在用户可以编辑XAML,应用程序将收听它。

当然:

  • 应用程序/窗/等将需要重新加载/每次更改文件
  • 他们现在可以在UI层改变一切后重新启动
  • 他们必须正确编辑文件,他们可能需要一些基本的训练
  • 您的应用程序可能得到一点更复杂,因为它现在将很难找到正确的控制e UI,但如果你使用虚拟机和绑定和命令,那么你本质上是安全的,以防止这个问题(如果你不使用这种方法,那么考虑开始)
+0

是的,这也是我的想法。但我有点怀疑,但你确信这可能是最好的方法。 – user2657943

+0

我很害怕可以编辑xaml的用户(有或没有基本培训)。简单的例子:UI元素有一个默认的背景和一个触发器,在某些condion下改变背景的样式。那么用户就会在ui元素上写'Backround ='White'',而忽略风格。接下来发生的是100个关于不工作触发器的错误报告。另一方面,Visual Studio IDE是可定制环境的一个很好的例子(带有可移动和可缩放的窗口以及一个漂亮的Tools \ Options \ Enviroment \ Fonts and Colors设置对话框) – ASh

+0

@ASh:对于当前的方法也是如此 - 只是想象用户编辑配置数据库并将按钮移动到位置(+ 34000,+ 23000)或设置背景:white和textcolor:whitesmoke。考虑到* [经理,谁]希望用户能够将[控制]放在他想要的任何位置,使其具有任何颜色或字体大小等等*,这实际上是一种低成本,低成本的方式如果他们真的想要这样做(他们的'用户'可能真的有时间和技术技能,对吗?),或者让经理重新思考他的方法和要求,他们完全实现了目标。 – quetzalcoatl

相关问题