3

たとえば、ユーザーが独自の名刺をデザインし、現在デザインしている「テンプレート」にビジュアルオブジェクトを追加できるアプリケーションを作成しているとします。これらのオブジェクトは、ユーザーのさまざまなビットにバインドされています。データ。

例えば。ユーザーのアドレスを自動的に入力する「アドレスボックス」をドラッグしてから、ユーザーが定義した名前を自動的に使用する「名前テキスト」をドラッグします。

これは、顧客が15個のテンプレートをすべて独自の「外観」で作成できるためですが、アドレスを変更する場合は、1か所で変更するだけで済みます。

これらのビジュアルオブジェクトとテンプレート自体はすべてXAMLで記述されています。これらのユーザー作成テンプレートをデータベースに保存して、後で取得して編集できるようにする必要があります。私の見方では、2つの選択肢があります。

  1. テンプレート全体をXAMLとして、IDおよびOwnerIDとともに「templates」と呼ばれるデータベーステーブルに保存します。

  2. 抽象型の「ビジュアルオブジェクト」のテーブルを作成します。抽象型から継承し、ユーザーが構成可能な各プロパティ(フォントサイズ、x / y座標など)のフィールドを持つ、視覚オブジェクトの具体的な型(つまり、「AddressBox」)ごとにテーブルを作成します。最後に、ビジュアルオブジェクトのコレクションを保持するtemplateというテーブルを作成します。

これを設計するためにEntityFrameworkを使用していることに注意してください。そのため、EFキーワードをいくつかスローした場合はお詫びします。

個人的には、当面はXAMLストレージで要件を満たすのに十分かもしれませんが、私が見たすべてのことは、データベースにデータを格納するのは本当に悪い方法であることを示唆しているようです。これで35分にスキップしてください:http://youtu.be/uFLRc6y_O3sこれ彼がやらないように提案していることではありませんか?

XAMLストレージを使用すると、プロパティ値の継承が得られます。これにより、値がチェーンをどのように「流れる」かをユーザーが理解できるかどうかはわかりませんが、少し簡単になる可能性があります。もちろん、XAMLを使用すると、好きなプロパティ値を格納することもできます。最初にデータベースに追加する必要はありません。

欠点は、すべてXAMLの場合、データの管理が非常に難しくなる可能性があることです。最悪の場合、XAMLのすべての部分を取得し、それらすべてを解析し、変更/確認する必要のある値を見つけ、再解析し、XAMLの更新された「blob」を保存しなければならない可能性があります。これにより、明らかにはるかに大きな読み取り/書き込み操作が発生します。

4

3 に答える 3

5

XAMLを直接保存するために行きます。理由は、抽象レイアウトを格納することで得られる唯一の利点は、UIフレームワークを置き換えることができ、XAMLの潜在的な重大な変更から身を守ることができることです。ただし、Microsoftによって導入された重大な変更により、すべてのコントロールが無効になるため、アップグレードの可能性もあり、それらを利用できる可能性が非常に高くなります。

私にとってオプション2は確かにより良いバージョンですが、私は「YAGNI」の男になる傾向があります。したがって、必要なときに開発し、WPFを使用している場合はそれを選択してください。

hth、マーティン

于 2012-04-20T10:23:51.927 に答える
4

オプション2に投票しますが、具体的なオブジェクトごとに個別のテーブルが必要な場合は、「ユーザー構成可能なプロパティ」ごとにフィールドを設定する代わりに、すべてのユーザー構成可能なプロパティをリンクされた別のテーブルに配置できます。 conrete-objectテーブルに次のようなものを追加します。

ConcreteObjectTable

ObjectID | ObjectName | ObjectTemplate


ConcreteObjectPropertyTable

PropertyID | ObjectID | PropertyName | PropertyValue


このように、構成オプションについて心配する必要があるテーブルは2〜3個だけです。

于 2012-04-24T04:04:06.507 に答える
2

私もオプション2に投票します。このように保存することで、データの使用方法が非常に柔軟になります。

欠点は、オプション2では、データをXAMLコードに解析するある種のパーサーを作成する必要があることです。ただし、同じデータ(たとえば、HTML)の2つのGUIが必要な場合は、HTMLパーサーを作成するだけで済みます。また、データベースに保存するデータは減少します。

したがって、要約すると(オプション2の場合):

長所

  • データの柔軟な解釈
  • データストレージに必要なデータベーススペースの削減

短所

  • GUI実装ごとにパーサーを作成する必要があります
于 2012-04-26T06:11:30.183 に答える