私は WPF 開発に不慣れで、アプリケーション内で繰り返されるデータバインディング パターンに関するアドバイスを探しています。
私が使用しているデータベースでは、測定単位と関連する値がかなり頻繁に使用されています。
デモンストレーションのために、私が何を扱う必要があるかについての手がかりを与えるかもしれないいくつかの簡素化されたテーブル構造を次に示します。
サンプルテーブル
- (...)
- 量
- MeasurementUnitId
- (...)
SampleTable2
- (...)
- スピード
- DistanceMeasurementUnitId
- TimeMeasurementUnitId
- (...)
SampleTable3
- (...)
- 距離
- MeasurementUnitId
- (...)
SampleTableN (など...)
- (...)
- 重さ
- WeightMeasurementUnitId
- 音量
- VolumeMeasurementUnitId
- (...)
測定単位
- ID
- MeasurementUnitTypeId
- 短い名前
- 変換係数
- (...)
MeasurementUnitTypes
- ID
- 短い名前
- (...)
名前がそれ自体を物語っていることを願っています。:)
システムの仕組み上、保存された値はすべてデフォルトのシステム単位でなければなりません。ユーザーが UI で 10 メートルを書き込んでも、値は 10 として保存されず、システム値に変換されます。たとえば、距離値の場合、距離単位タイプのデフォルトの測定単位がセンチメートルの場合、1000 cm = 10 メートルであるため、保存される値は実際には 1000 になります。
ただし、ユーザーが使用した測定単位はデータベースに保存されます。これは、次に UI でレコードを開いたときに、実際に 1,000 cm ではなく 10 メートルが表示されるようにするためです。もちろん、そこでも変換を実行する必要があります。
単位測定タイプごとに 1 つのシステム単位があります。これは、ConversionFactor が 1 に設定されているものです。他の測定単位には、それに関連する ConversionFactor があります。上記の距離の例題を元に戻します。
- CM: 1
- 中:100
- キロ: 100 000
- (等。)
UI では、コンテキストに従って、テキスト ボックスを使用して数値を書き込み、単位タイプでフィルター処理された測定単位をロードしたコンボ ボックスを使用したいと思います。ユーザーがデータをロードするときは、入力されたとおりに表示される必要があります (関連する測定単位に従って変換されます)。値を入力すると、バインディング メカニズムは、現在選択されている測定単位の ConversionFactor に従って、正しい変換された値をエンティティ クラスに書き戻す必要があります。
測定単位を選択すると、個人の設定に応じて、次の 2 つのことが起こります。
- 表示数が変わり、記憶数はそのまま
- 表示数値はそのままで、記憶数値を変換
今私の質問は...簡単に再利用できるようにカプセル化できるこの機能の量はどれくらいですか? そして、これを行う最良の方法は何ですか?
これらのフィールドを個別に表示する必要がある場合があることに注意してください。たとえば、グリッドでは、数値部分と単位部分の両方の列が必要です。これは、ユニットだけでフィルタリングとソートを可能にするためです。
ユニットリスト/コンボ/その他のコントロールを毎回再作成する必要はありません。主に単位変換部分の再利用に興味があります。
ここまで読んでくれて (うわー!)、そして思いついたアイデアをありがとう。:)