Задать вопрос
@exvel

WPF: Привязка данных к глубоко вложенному свойству

Возможно ли силами XAML привязать TexBlock'у значение свойства объекта, который глубоко вложен?

К примеру, TextBlock находится в ProgramName.MainWindow, а привязываемое свойство в ProgramName.App.Object1.Object2.Object3.Value.

На самом деле, я не могу понять как можно указать в XAML, что объект находится в определенном пространстве имен.
Пытался играться с DataContext и xmlns, но все бестолку.
В интернетах все примеры для простых вариантов привязки. :(
  • Вопрос задан
  • 6335 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
VenomBlood
@VenomBlood
Если нужно привязаться к статическому объекту — я выше написал, если не к статическому (напр. через DataContext) то просто дописываете путь:

<TextBox Text="{Binding Path=MyObject1.MyObject2.MyObject3.Name}"/>
Где Path — путь относительно наиблажайшего объекта DataContext.
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
ProgramName.(AppType.App).(Object1Type.Object1).(Object2Type.Object2).(Object3Type.Object3).Value
Примерно так попробуйте… Самому сейчас лень проверять, но должно выглядеть примерно так…
Ответ написан
Комментировать
@exvel Автор вопроса
Попробовал так:
/>
(Это мой случай)
После запуска, TextBlock пуст.
Ответ написан
Комментировать
@exvel Автор вопроса
Парсер съел. Как-то так пробовал:
TextBlock Text="{Binding MainProgram.(Application.App).(LogService.Log).LastEntryText}" />
Ответ написан
@exvel Автор вопроса
Что-то не очень понял что тут. Если что, у меня класс не статический, а Log и App — объекты.
Попробовал по аналогии написать. Задал вот такой xmlns:
xmlns:log="clr-namespace:MainProgram.App.Log;assembly=MainProgram"

Пишет: Незаданное пространство имен CLR. URI «clr-namespace» ссылается на пространство имен «MainProgram.App.Log», которое не включено в сборку.
Ответ написан
@exvel Автор вопроса
Тьфу. Ладно, неважно. Пропустил строку, что можно задавать DataContext для каждого объекта. Спасибо, вопрос снят. :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы