Silverlightデータフォームのプロパティautogeneratedfieldsがtrueに設定されていると、すべて正常に動作します(ボタンの動作は正しいので、入力を開始するとすぐに意味します)。だから、今私は、データフォームの外観をカスタマイズし、autogeneratefieldsをfalseに設定しなければならないシナリオがある(xamlのdatafieldsを手動で使用している)、テキストボックスに何かを入力するとコミットボタンが有効にならず私は、次のテキストボックスにマウスを置いたときに有効になります。すべてのヘルプは感謝しています。ありがとうございました。Silverlightのデータ入力ボックスからの入力が最初に有効になりません
答えて
があなたのオブジェクトIEditableObject
(System.ComponentModel)作ってみましょう。
DataForm
についてのすばらしい点は、現在進行中の状態でオブジェクトと通信しようとすることです。 AutoGenerateFields
が使用されている場合は、データフォームのテンプレートエンジンと使用しようとしているオブジェクトの間に何かが存在するため、ループが完了します。
利用可能なIEditableObject
にインターフェイスがない場合(自分でテンプレートを提供したため)、DataForm
は、Bindingが更新されるまで実際にオブジェクトを編集していることはわかりません。 Silverlightでは、フォーカスが失われたTextBox
の後にのみバインディングが更新されます。
IEditableObjectのポイントは、この男が適切にキャンセルして保存する方法を知っていることをオブジェクトに伝えることです。これは、MSDN documentationがオブジェクトを元の状態にロールバックできる必要があると指示したときに特に重要です。編集を始めると、そのコピーを保存することができます。次に、キャンセルをクリックすると、データをコピーして変更をロールバックすることができます。私はMSDNの記事をチェックしたい、彼らはそれを説明する良い仕事を行う。
オブジェクトをIEditableObject
にすると、この動作は必要な方法に戻ります。そうでなければ、私は問題を正しく理解しておらず、小さなサンプルのコードを見たいと思うでしょう。
また、CodePlexの上DataForm
のソースコードをチェックアウトして自由に感じる:私は何かを把握するためのコードを何度も閲覧しなければならなかったhttp://silverlight.codeplex.com/SourceControl/changeset/view/71382
。
運が良かった!
こんにちは、datafromがバインドされているCustomerSearchというクラスがあります。そのため、BeginEditの中に何を入れますか? CustomerSearchクラスのすべてのプロパティには、セッターにRaisePropertyChanged( "")メソッドがあります。 – user282807
私はあなたを助けるために私の答えを編集しました。 – Jeremiah
私はビューモデルにIEditableObjectインターフェイスを実装する代わりに、xamlパートのデザイナエラーBinding_SourceConflictのElementNameに問題があります:CurrentItem = "{Binding Source = {StaticResource Locator}、ElementName = MemberSearch、Path = Main.MemberSearch、Mode = TwoWay}」 – user282807