Как сделать так, чтобы данные Silverlight из кнопки «Принять» были включены, когда у меня есть привязка данных к текстовому полю из внешнего ключа и текст в текстовом поле редактируется - PullRequest
1 голос
/ 15 ноября 2011

Я использую SL4, набор инструментов RIA Spt 2011, SP1. MVVM

Когда мое текстовое поле находится прямо из родительской таблицы, при изменении текста кнопка фиксации активируется, но когда текстовое поле получено из внешнего ключа и когда мы вносим изменения, кнопки отправки все еще остаются отключенными.

Прочитал это Кнопка фиксации DataForm не активна при изменении данных , что не похоже на мою проблему.

моя таблица базы данных выглядит как

Customertable (имя, IdEmail) и EmailTable (IdEmail, электронная почта)

Форма данных выглядит так:


Имя: _____________

Электронная почта: _____________

  |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»

Или единственный способ решить эту проблему - сделать собственную кнопку отправки и отмены?

Ответы [ 2 ]

0 голосов
/ 04 января 2017

Старый вопрос по устаревшей технологии.Идеальное время для ответа: расширьте форму данных, чтобы командная кнопка всегда была включена.

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;
      };
  }  
}
0 голосов
/ 16 ноября 2011

Не видя остальную часть вашего кода, я делаю пару снимков в темноте. Я предполагаю, что вы начинаете редактирование или переводите форму в режим добавления новых, поскольку кнопка отмены активна? Если это не проблема, возможно, самое простое решение - вручную включить (и отключить, если необходимо) кнопку отправки. Возможно, сделать это с VisualTreeHelper, как предложено в этой ветке форумов SL , поможет?

...