Silverlight, DataForm, AutoGeneratingField, службы RIA и дочерние объекты - PullRequest
0 голосов
/ 12 января 2010

Я пытаюсь согнуть DataForm для поддержки множества ко многим и связывания списков дочерних объектов. Я получил возможность контролировать отображение объектов и иметь доступ к событию при изменении.

Например:

OfferEditorForm.AutoGeneratingField += new EventHandler<DataFormAutoGeneratingFieldEventArgs>(OfferEditorFormGeneratingField);

А вот мое маленькое переопределение:

if (e.PropertyName == "Client")
        {
            var stack = new StackPanel();
            var dataField = new DataField { Content = stack, Label = "Client:" };
            var binding = new Binding("CustomerClients") { Source = _viewModel };
            var combo = new ComboBox
            {
                DisplayMemberPath = "Name",
                Name = "OfferEditForm_Client",
                SelectedItem = _viewModel.CustomerLoyaltyProgramOffer.Client
            };

            combo.SetBinding(ComboBox.ItemsSourceProperty, binding);
            combo.SelectionChanged += new SelectionChangedEventHandler(CustomerClients_SelectionChanged);
            stack.Children.Add(combo);
            dataField.Content.UpdateLayout();
            e.Field = dataField;
        }

Я перехватываю событие SelectedChanged и обновляю элемент в моей модели представления, который устанавливается как текущий элемент для формы следующим образом:

void CustomerClients_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        FrameworkElement frameworkElement = sender as FrameworkElement;
        ComboBox comboBox = (ComboBox)frameworkElement.FindName("OfferEditForm_Client");
        if (comboBox != null)
        {
            _viewModel.CustomerLoyaltyProgramOffer.Client = (CustomerClient)comboBox.SelectedItem;
            _viewModel.CustomerLoyaltyProgramOffer.CouponImage = "OMG!";
        }
    }

Когда я отправляю изменения, в этом примере CouponImage отправляется для обновления метода в моей службе домена, но Клиент по-прежнему равен NULL.

CustomerLoyaltyProgramOffer, похоже, не вызывает изменение свойства уведомления.

Это проблема дочернего объекта? Я все об этом ошибаюсь? Нужно ли создавать целый шаблон редактирования?

1 Ответ

0 голосов
/ 02 февраля 2010

Вам следует установить атрибут [Association] в свойстве Client вашего класса CustomerLoyaltyProgramOffer в вашем Model.designer.cs

Посмотрите на эти две ссылки для получения дополнительной информации:

http://tech.rofas.net/post/Working-with-associated-POCO-objects-in-WCF-RIA-Services.aspx http://blogs.msdn.com/digital_ruminations/archive/2009/11/18/composition-support-in-ria-services.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...