Как включить данные Silverlight из кнопки «Фиксация», когда у меня есть привязка данных к текстовому полю из внешнего ключа, а текст в текстовом поле редактируется

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

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

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

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

Таблица клиентов (имя, IdEmail) и электронная почта (IdEmail, электронная почта)

Форма данных похожа на:


Имя: _____________

Электронное письмо: _____________

  |submit| |Cancel|

Но кнопка отмены всегда активна. Я хочу, чтобы кнопка отправки была активной, когда у меня есть какие-либо изменения в электронном письме. однако, если у меня есть изменения в имени, активируется кнопка отправки, и после этого я также могу сохранить изменения в электронной почте.

И имя, и адрес электронной почты имеют двустороннюю привязку к модели просмотра.

например, модель просмотра похожа на

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

Поле электронной почты в приведенном выше «представлении» привязано к «Customer.EmailTable.Email»

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


person webKite    schedule 15.11.2011    source источник


Ответы (2)


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

person Esoteric Screen Name    schedule 15.11.2011
comment
Спасибо за предложения, но я с нетерпением жду возможности использовать встроенную кнопку фиксации и отмены для DataForm (CommandButtonsVisibility = commit, cancel) - person webKite; 16.11.2011
comment
@webKite - Приношу свои извинения, по-видимому, мое понимание прочитанного ужасно. Я отредактирую свой ответ, чтобы он был более полезным. - person Esoteric Screen Name; 16.11.2011

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

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;
      };
  }  
}
person Rkand    schedule 04.01.2017