Silverlight & WPF - DataContext и способ, которым PropertyChangedEvents являются KickedOff - PullRequest
1 голос
/ 14 июля 2011

Hello Stackoverflowians,

У меня есть вопросы относительно того, как наилучшим образом убедиться, что ваши представления Silverlight или WPF правильно запускают события NotifyPropertyChanged.

У меня есть случай вприложение Silverlight, где я устанавливаю свой DataContext следующим образом:

 public SubTopic SubTopicItem
        {
            get { return (SubTopic)GetValue(SubTopicItemProperty); }
            set { SetValue(SubTopicItemProperty, value); }
        }

        // Using a DependencyProperty as the backing store for SubTopicItem.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty SubTopicItemProperty =
            DependencyProperty.Register("SubTopicItem", typeof(SubTopic), typeof(AddModifySubTopic), new PropertyMetadata(null));


        public AddModifySubTopic()
        {
            InitializeComponent();
            this.DataContext = this;       
        }

И у меня возникают проблемы с некоторыми сетками данных, которые извлекают данные из некоторых объектов EntityPropertys, находящихся на этом объекте.

MyГлавный вопрос заключается в том, будет ли какая-то реальная разница, если вместо использования

    public AddModifySubTopic()
    {
        InitializeComponent();
        this.DataContext = this;       
    }

я использую:

        public AddModifySubTopic()
        {
            InitializeComponent();
            this.DataContext = SubTopicItem;       
        }

Будет ли Silverlight или WPF Framework обрабатывать DataContext более напрямую, и уведомлять, есликакие-либо свойства или наборы сущностей меняются в течение срока службы объекта?

В данный момент мне нужно обновить мои DataGrids с помощью

DataGridName.SetValue(DataGrid.ItemsSourceProperty, SubTopicItem);

Спасибо всем.

Ура Робби

1 Ответ

2 голосов
/ 14 июля 2011

Похоже, у вас проблемы с привязкой данных.Я думаю, что большая часть кода, который вы разместили, не поможет пролить свет на проблему.

Если привязка не работает, это почти всегда проблема с:

  1. Синтаксис привязки XAML.
  2. Исходный объект и способ реализации INotifyPropertyChanged.

Я бы порекомендовал отработать нерабочий код, чтобы сделать его простымрегистр, а затем опубликуйте свой XAML и исходный объект.

Редактировать

Из вашего комментария:

Проблема возникает, когдановый элемент добавляется в List<TYPE>, и возникает вопрос: какой подход лучше?this.DataContext = DEPENDENCYOBJECT или this.DataContext = CHILDWINDOW / PAGE и т. д.

То, как вы устанавливаете DataContext, не должно влиять на работу привязки (при прочих равных условиях).

Если вы действительно используете List<Type>, это, вероятно, ваша проблема, так как уведомления об изменениях коллекции работают иначе, чем уведомления об изменениях свойств.Вы хотите привязать к ObservableCollection<Type>.Я не уверен, если это вариант, если ваш класс сущности генерируется, но это может быть (я не эксперт Entity Framework).

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