skubche
1

Как привязаться из ItemTemplate к свойству DataContext

11.10.2010, 19:02. Показов 2626. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Возможно нубский вопрос, но поиск увы не помог.
Например, DataContext котрола установлен на объект cо свойством string Header и IList<Name> Names.
В этом контроле имеется ListBox:
XML
1
2
3
4
5
6
7
8
 <ListBox ItemsSource="{Binding Names}">
     <ListBox.ItemTemplate >
         <DataTemplate>
                    <TextBlock Text="{Binding Header}"/> 
                    <TextBlock Text="{Binding ShortName}"/> 
         </DataTemplate>
      </ListBox.ItemTemplate>
   </ListBox>
Кончено же, Header не покажется так как он ищет его в свойствах Item'a коллекции...
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.10.2010, 19:02
Ответы с готовыми решениями:

Как отменить запуск анимации в Style.ItemTemplate
Здравствуйте. Стоит такая задача: создается ListBox на основании шаблона из ResourceDictionary: ...

Как привязаться к системному времени?
Как привязаться к системному времени в Windows Forms? Смысл в том, что есть приложение-планировщик...

Сокеты. Как привязаться к ip сервера
Написал клиент и сервер. Запускаю сервер на свойм компе. Запускаю клиент тоже на своём. Коннекчусь...

Еще раз о календаре... Как привязаться к Calendar1_SelectionChanged?
В дополнение к топику http://www.relib.com/forums/topic.asp?id=834179 Я поставил кнопку и добавил...

2
34 / 34 / 5
Регистрация: 20.09.2010
Сообщений: 53
11.10.2010, 21:47 2
В DataTemplate DataContext перезаписывается элементами коллекции из ItemsSource.
Можно установить биндинг на DataContext родительского ListBox’а.

Вот так должно работать:
XML
1
2
3
4
5
6
7
8
9
10
<ListBox ItemsSource="{Binding Names}">
    <ListBox.ItemTemplate >
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding RelativeSource={RelativeSource AncestorType=ListBox}, Path=DataContext.Header}"/>
                <TextBlock Text="{Binding ShortName}"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
1
skubche
12.10.2010, 00:38 3
Спасибо!
Эх, жаль только в WPF работает.
Забыл написать что мне в SL это надо

Добавлено через 1 час 29 минут
Подызвративившись придумал решение. Даём корневому элементу имя root и прописываем такую привязку:
XML
1
2
  
<TextBlock Text="{Binding ElementName=root, Path=DataContext.Header}"/>
12.10.2010, 00:38
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.10.2010, 00:38
Помогаю со студенческими работами здесь

Как на время привязаться к другому внешнему айпи-адресу?
Добрый день. Вопрос, возможно, и бредовый, но меня очень интересует, возможно ли на время...

Как прописть ItemTemplate y TemplateColumn в коде
Уважаемые, В моем web DataGrid есть TemplateColumn у которой в качестве ItemTemplate идет...

Как динамически менять DataContext?
У меня есть в WPF ToolTip у ComboBox, он при запуске программы заполняется из строкового поля...

Как специфицировать тип DataContext?
Добрый день! Как явно указать тип DataContext, У меня вечно дизайнер VS community 2015 ругается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru