1

SL4、RIAツールキットSpt 2011、SP1を使用しています。MVVM

テキストボックスが親テーブルから直接のものである場合、テキストを変更するとコミットボタンが有効になりますが、テキストボックスが外部キーからのものであり、変更すると送信ボタンは無効のままになります。

このDataFormコミットボタンを読んだことがありますが、データが変更されたときに有効になりません。これは私の問題とは異なります。

私のデータベーステーブルは次のように見えます

Customertable(名前、IdEmail)およびEmailTable(IdEmail、Eメール)

データフォームは次のようなものです。


名前: _____________

Eメール: _____________

  |submit| |Cancel|

ただし、キャンセルボタンは常にアクティブです。メールに変更があった場合は、送信ボタンをアクティブにします。ただし、名前を変更した場合は、送信ボタンが有効になり、その後、変更を電子メールに保存することもできます。

名前と電子メールの両方に、viewmodelとの双方向のバインディングがあります。

たとえば、ビューモデルは次のようなものです

 private ObservableCollection<Customertable > _customer
public ObservableCollection<Customertable > Customer
{
   get return _customer;
}
  set{
     if(_customer == value) return;
    _customer = value;
    RaisedProtertyChanged("Customer");
}

上記の「ビュー」のメールフィールドは「Customer.EmailTable.Email」にバインドされています

または、これを解決する唯一の方法は、独自のカスタム送信およびキャンセルボタンを作成することですか?

4

2 に答える 2

0

時代遅れの技術に対する古い質問。答える絶好の機会: コマンド ボタンが常に有効になるようにデータフォームを拡張します。

public class CustomDataForm : DataForm
{
  private Button _commitButton;
  protected override void OnContentLoaded(DataFormContentLoadEventArgs e)
  {
    base.OnContentLoaded(e);
    var dependencyObject = VisualTreeHelper.GetChild(this, 0) as Grid;
    _commitButton = dependencyObject?.FindName("CommitButton") as Button;
    if (_commitButton == null) return;
    _commitButton.IsEnabled = true;
    _commitButton.IsEnabledChanged += (s, e1) =>
      {
        if (!(bool) e1.NewValue)
          _commitButton.IsEnabled = true;
      };
  }  
}
于 2017-01-04T20:28:20.297 に答える
0

あなたのコードの残りの部分を見ることなく、私は暗闇の中で数枚の写真を撮っています. キャンセルボタンがアクティブになっているので、編集を開始するか、フォームを新規追加モードにすると思いますか? それが問題でない場合、おそらく最も簡単な修正は、送信ボタンを手動で有効にする (必要に応じて無効にする) ことです。おそらく、この SL フォーラムのスレッドで提案されているように、VisualTreeHelper を使用するとうまくいくでしょうか?

于 2011-11-15T22:26:42.317 に答える