2017-01-30 2 views
-2

私たちのマネージャーは、私たちが取り組んでいるWPFアプリケーションを、ユーザーのために完全にカスタマイズできるようにしたいと考えています。それで、ページにテキストボックスがあるとしましょう。彼は、ユーザーが望む任意の位置に置くことができ、色やフォントが必要なものにすることができるようにしたいと考えています。今の実装では、SQLデータベースにすべてのプロパティを格納してから、コードの背後にある。XAMLビューを柔軟にカスタマイズできるようにするには

これは、プロセス全体が遅くなるため、私の意見ではひどい実装です。ページをナビゲートするときに、コードビハインドがすべてのプロパティを取得してオブジェクトに変換し、オブジェクトをビューに実装してからそのビューを作成する、少なくとも10秒の読み込み時間があります。私はこれを行うためのより良い方法がなければならないと思います。なぜなら、それは非常に多くの時間とリソースを吸い上げているからです。これにはより良い実装がありますか?

答えて

2

これにはたくさんの方法がありますが、 "すべて変更可能"にする必要がある場合、それを行う簡単な方法があります。外部ツールがなくても可能です。

デフォルトでは、XAMLはコンパイルされ、.exe/.dllに含まれますが、XAMLはファイル/文字列/その他から動的に読み込むことができます。 XAMLをテキストファイルに入れ、コンパイルオプションを変更せずに "content"と "copy always"としてインクルードし、そのファイルを動的にロードします(XmlReader.Load method)。

ユーザーはXAMLを編集できるようになり、アプリケーションはそれを聞きます。もちろん

  • アプリ/ウィンドウは、/ etcは、彼らが今、UI層にすべてを変更することができます
  • ファイルへのすべての変更後に再起動/再ロードする必要があります
  • 彼らファイルを正しく編集する必要があります。基本的な訓練が必要になるでしょう。
  • は複雑になります。なぜなら、今度は正しいコントロールを見つけるのが難しくなるからです。あなたがVMとバインディングとコマンドを使用する場合、あなたは本質的にその問題に対して安全です(そして、そのアプローチを使用しないと、開始を検討してください)。
+0

私は同様に考えていました。しかし、私は少し懐疑的でしたが、おそらく最も良い方法だと私は確信しました。 – user2657943

+0

xamlを編集できるユーザー(基本的なトレーニングの有無にかかわらず)について考えるのは恐ろしいことです。単純な例:ui要素には、デフォルトのバックカラーと、ある条件の下でバックカラーを変更するトリガーを持つスタイルがあります。ユーザはスタイルを無視してUI要素に 'Backround =" White "'と書く。次に起こるのは、動作していないトリガーに関する100のバグレポートです。一方で、Visual Studio IDEはカスタマイズ可能な環境の良い例です(移動可能とピンイン可能なウィンドウと便利なTools \ Options \ Enviroment \ FontsとColorsの設定ダイアログ) – ASh

+0

@ASh:現在のアプローチについても同様ですユーザが設定データベースを編集し、ボタンを位置(+ 34000、+ 23000)に移動するか、または背景を設定すると想像してください:白と文字色:白モス。 * [manager、who]が[コントロール]を自分が望む任意の位置に置くことができるようにすることを考え、彼が望むような色やフォントを持つようにする*、これは実際には低コストの低労力で本当にそのようにしたいのであれば、目標を完璧に達成してください(自分のユーザーは実際に時間と技術のスキルを持っているかもしれません)か、マネージャーにアプローチと要件を再考させてください。 – quetzalcoatl

関連する問題