locked
Несколько DataContext RRS feed

  • Вопрос

  • Что то не могу использовать несколько DataContext в одном окне

    Если главное окно в нём

    DataContext="{Binding DefaultViewModel, RelativeSource={RelativeSource Mode=Self}}"

    внутри этого окна есть Grid который требуется привязать к определенному классу. делаю так

                        <Grid.DataContext>
                            <Mein:IT/>
                        </Grid.DataContext>

    И поля не обновляются

    Спасибо

    11 февраля 2013 г. 1:28

Ответы

  • Если у меня указан DataContext для всего окна то потом в коде я задаю datacontext=this применительно к коллекции То все привязки которые действовали не для коллекции они перестанут работать?


    Спасибо

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

    Если у вас не работает, значит вы что то не так делаете. Желательно XAML все окна


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа developers_s 12 февраля 2013 г. 4:52
    11 февраля 2013 г. 9:14
  • Я немного MDSN процитирую:

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

    "Если имеются дочерние элементы без других значений DataContext, установленных через локальные значения или стили, то система свойств установит в качестве данного значения значение DataContext ближайшего родительского элемента с назначенным таким значением."

    То есть в вашем варианте если вы меняте привязку для списка, то привязка изменится только для списка и дочерених элементов списка.

    • Помечено в качестве ответа developers_s 12 февраля 2013 г. 4:52
    11 февраля 2013 г. 9:16

Все ответы

  • Из вашего примера сложно понять всю картину происходящего.
    11 февраля 2013 г. 8:27
  • Если у меня указан DataContext для всего окна то потом в коде я задаю datacontext=this применительно к коллекции То все привязки которые действовали не для коллекции они перестанут работать?


    Спасибо

    11 февраля 2013 г. 8:56
  • Если у меня указан DataContext для всего окна то потом в коде я задаю datacontext=this применительно к коллекции То все привязки которые действовали не для коллекции они перестанут работать?


    Спасибо

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

    Если у вас не работает, значит вы что то не так делаете. Желательно XAML все окна


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Помечено в качестве ответа developers_s 12 февраля 2013 г. 4:52
    11 февраля 2013 г. 9:14
  • Я немного MDSN процитирую:

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

    "Если имеются дочерние элементы без других значений DataContext, установленных через локальные значения или стили, то система свойств установит в качестве данного значения значение DataContext ближайшего родительского элемента с назначенным таким значением."

    То есть в вашем варианте если вы меняте привязку для списка, то привязка изменится только для списка и дочерених элементов списка.

    • Помечено в качестве ответа developers_s 12 февраля 2013 г. 4:52
    11 февраля 2013 г. 9:16