locked
Ошибка при связывании (binding'е) данных RRS feed

  • Вопрос

  • Всем привет!

    Возникла ошибка при связывании данных.

    Есть родительский и подчиненный контроллы в которых реализовано свойство зависимостей SelectedIndex.

    Далее в родительском контролле связываю это свойство с таким же свойством подчиненного:

    //this = currentObject; 
    //typeof(this) == typeof(Reader);
    
    var indexBinding = new Binding();
    indexBinding.Mode = BindingMode.TwoWay;
    //указываю подчненный контролл как источник данных
    indexBinding.Source = epubConrol.SelectedIndex;
    //Очищаю свойство зависимостей и создаю привязку 
    currentObject.ClearValue(Reader.SelectedIndexProperty);
    currentObject.SetBinding(Reader.SelectedIndexProperty, indexBinding);

    Потом, если менять SelectedItem главного котролла с помощью кнопок страницы - все работает нормально, котролл прокручивает Item подчиненного котролла. Если я делаю свайп по подчиненному контроллу, то в родительский контролл не приходит уведомление об изменении.

    В чем может быть причина?

    24 июля 2014 г. 9:36

Ответы

Все ответы

  • Я так  понимаю если прикрутить пустой конвертер, то в него конкретно во всех случаях, кроме свайпа, будет попадать?
    25 июля 2014 г. 10:18
  • Может свойство UpdateSourceTrigger явным образом задать?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    25 июля 2014 г. 10:20
  • Может свойство UpdateSourceTrigger явным образом задать?

    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    Пробовал. Не помогает. К тому же, по умолчанию поведение триггера как и при PropertyChanged 
    25 июля 2014 г. 10:23
  • Я так  понимаю если прикрутить пустой конвертер, то в него конкретно во всех случаях, кроме свайпа, будет попадать?

    Не, там штука такая: есть "главный контролл", который в зависимости от типа файла электронной книги показывает нужный контролл. Кроме этого главый контролл обеспечивает пролистывание страниц если пользователь не использует тач-скрин, если используется тачскрин - контролл сам выполняет пролистывание страниц, естественно он должен уведомлять "главный контролл".

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

    Советовали сделать с помощью Binding.Path и Binding.ElementName, но не помогло.

    25 июля 2014 г. 11:19
  • То есть структура простая.

    Есть какой-то контрол с свойством SelectedIndex.

    В нем есть 1 ребенок с таким же свойством.

    - При изменении свойства у родителя - менятся свойство у ребенка.

    - При изменении свойства у ребенка - меняется свойство у родителя.

    Верно?

    25 июля 2014 г. 12:08
  • То есть структура простая.

    Есть какой-то контрол с свойством SelectedIndex.

    В нем есть 1 ребенок с таким же свойством.

    - При изменении свойства у родителя - менятся свойство у ребенка.

    - При изменении свойства у ребенка - меняется свойство у родителя.

    Верно?

    Все правильно
    25 июля 2014 г. 12:09
  • Ок, вечером поковыряю.
    25 июля 2014 г. 12:12
  • Такое подойдет? Parent binding project

    • Помечено в качестве ответа V.A.Zolotov 28 июля 2014 г. 6:25
    27 июля 2014 г. 11:25
  • Такое подойдет? Parent binding project

    Спасибо! То что нужно. Не думал что тип привязки TwoWay нужно указывать и у родителя и ребенка
    28 июля 2014 г. 6:25