私は、同じオブジェクトのいくつかのコントロールパネルであるUWPアプリケーションで作業しています。それらをPlateオブジェクトと呼んでいます。複数のフレームと複数の対応するオブジェクト間のデータバインディングを維持する方法はありますか?
機能的には、特定のプロパティを持つPlateオブジェクトを削除し、現在使用可能なすべてのPlateオブジェクトを対応する一意のプロパティとそれらを変更するコントロールと共にメインページに表示する必要があります。
私がこれを実装したのは、メインページ上にグリッドを作成し、利用可能な各プレートに対してフレームをグリッド列に追加し、各フレームがカスタムのPlateViewページにナビゲートして、基本的に水平PlateView列のリスト。
私の問題は、各プレートから対応するPlateViewへの各コントロール/プロパティの双方向データをバインドできるようにすることです。
今、完全なライフサイクルを通してアプリケーションの複数の部分からこのマスターリストを取得して変更する必要があるため、すべてのプレートのリストをApp.csのパブリック変数として保存します。
UWPのドキュメントでデータバインディングの説明を理解した方法として、PlateオブジェクトでINotifyPropertyChangedを実装するか、実装する別のPlateViewModelクラスを作成できます。
PlateViewを実装すると、PlateViewはそのViewModelをList内のPlateの正しいインデックス(this.ViewModel = App.plateList [1])に設定しますが、コピーを作成すると仮定します...?したがって、PlateViewで変数を変更すると、実際にはApp.cのPlateオブジェクトは変更されません。
新しいPlateViewModelクラスでは、私は同じ問題はないが、PlateViewModelクラスの中でどのように理解できないのか分かりません。例えば、MSのマニュアルは示しています。構文:私はPlateViewModel内の内部プレートのオブジェクトを設定しても
public class RecordingViewModel
{
private Recording defaultRecording = new Recording();
public Recording DefaultRecording { get { return this.defaultRecording; } }
}
、私はXAML {バインド... X}から変数を呼び出す必要はありませんか?だから私は正しいPlateからPlateViewModelにすべての変数のコピーを作成しなければならず、App.csの元のPlateオブジェクトにリンクする必要はありませんか?
ありがとうございます!