powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как привязаться из ItemTemplate к свойству DataContext
25 сообщений из 35, страница 1 из 2
Как привязаться из ItemTemplate к свойству DataContext
    #36893377
skubche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно нубский вопрос, но поиск увы не помог.
Например, DataContext котрола установлен на объект cо свойством string Header и IList<Name> Names.
В этом контроле имеется ListBox:
Код: plaintext
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 коллекции...
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36893657
skubche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыл написать что задача в рамках Silverlight
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36893713
skubche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подызвративившись придумал решение. Даём корневому элементу имя root и прописываем такую привязку:
Код: plaintext
<TextBlock Text="{Binding ElementName=root, Path=DataContext.Header}"/>
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36893835
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
<TextBlock Text="{Binding DataContext.Header, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBox}}}"/>
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36893931
skubche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей К, спасибо!)
Если бы ещё четвёртый SL поддерживал AncestorType
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36893937
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skubcheАлексей К, спасибо!)
Если бы ещё четвёртый SL поддерживал AncestorTypeА там этого нет? Плохо...
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36893992
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36893994
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
Может, в пятой версии эти костыли уберут
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944377
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
i Implementing RelativeSource binding in Silverlight
А там случаем нету утечки памяти связанной с private static Dictionary<RelayBindingKey, ValueObject> relayBindings ?
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944395
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да блин проще самому написать...
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944442
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кутечка памяти
Бррр... Ужоснах. В топку технологию.
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944478
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей Кутечка памяти
Бррр... Ужоснах. В топку технологию.Так и знал.
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944551
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не для слабонервных
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
    public class BhBindingRelativeSource : Behavior<FrameworkElement>
    {
        public string TargetProperty { get; set; }
        public string SourceProperty { get; set; }
        public string AncestorType { get; set; }
        public IValueConverter Converter { get; set; }

        protected override void OnAttached()
        {
            base.OnAttached();
            AssociatedObject.Loaded += AssociatedObject_Loaded;
            AssociatedObject.Unloaded += AssociatedObject_Unloaded;
        }        

        protected override void OnDetaching()
        {
            base.OnDetaching();
            AssociatedObject.Loaded -= AssociatedObject_Loaded;
            AssociatedObject.Unloaded -= AssociatedObject_Unloaded;
        }

        void AssociatedObject_Loaded(object sender, RoutedEventArgs e)
        {
            var source = Source;
            if (source == null)
            {
                Debug.WriteLine("Ancestor with type " + AncestorType + " not found");
                return;
            }

            var targetDependencyProperty = TargetDependencyProperty;
            if (targetDependencyProperty == null)
            {
                Debug.WriteLine("Dependency property " + TargetProperty + " not found on " + AssociatedObject.GetType().FullName);
                return;
            }

            var binding = new Binding(SourceProperty);
            binding.Source = source;
            binding.Converter = Converter;
            AssociatedObject.SetBinding(targetDependencyProperty, binding);
        }

        void AssociatedObject_Unloaded(object sender, RoutedEventArgs e)
        {
            var targetDependencyProperty = TargetDependencyProperty;

            if (targetDependencyProperty == null)
                return;

            AssociatedObject.ClearValue(targetDependencyProperty);
        }

        DependencyProperty TargetDependencyProperty
        {
            get
            {
                var fieldInfo = AssociatedObject
                    .GetType()
                    .GetField(
                        TargetProperty + "Property",
                        BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy
                    );

                if (fieldInfo != null)
                    return (DependencyProperty)fieldInfo.GetValue(null);

                return null;
            }
        }

        DependencyObject Source
        {
            get
            {
                var result = VisualTreeHelper.GetParent(AssociatedObject);
                while (result != null)
                {
                    if (result.GetType().Name == AncestorType)
                        return result;
                    result = VisualTreeHelper.GetParent(result);
                }                
                return null;
            }
        }
    }
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944571
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идиотизм...
Возвращаемся на дельфи, где хоть клики нормально дестроятся, где нормально реализованы VMT/DMT и иже...

Первый век вторая четверть нах!
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944575
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уволитьнах Балмера и его тупорылых ксамл-индусов!
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944612
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУИдиотизм...
Возвращаемся на дельфи, где хоть клики нормально дестроятся, где нормально реализованы VMT/DMT и иже...

Первый век вторая четверть нах!Но утечка в коде от codeproject, написанном каким-то рукожопом.. Чё уж совсем-то. :-)
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944634
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНо утечка в коде от codeproject, написанном каким-то рукожопом.. Чё уж совсем-то. :-)
Подскажите пожалуйста, как в процессе отладки в MS VS 2010 определить наличие утечки памяти и как с этим бороться?
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944640
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CompositumАлексей КНо утечка в коде от codeproject, написанном каким-то рукожопом.. Чё уж совсем-то. :-)
Подскажите пожалуйста, как в процессе отладки в MS VS 2010 определить наличие утечки памяти и как с этим бороться?Ничего умнее наблюдения за расходом памяти в диспетчере задач виндоус не подскажу. :-)
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944649
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНо утечка в коде от codeproject, написанном каким-то рукожопом.. Чё уж совсем-то. :-)
"Утекает" даже обычный гавнотекстбокс , акститесь, мой северный (с) друх
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944675
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУАлексей КНо утечка в коде от codeproject, написанном каким-то рукожопом.. Чё уж совсем-то. :-)
"Утекает" даже обычный гавнотекстбокс , акститесь, мой северный (с) друх Но как-то же все делают?
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944687
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но ведь и сама MS VS 2010 написана на WPF (графическая часть)...
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944701
Фотография Compositum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не понял такого момента - ведь контролы WPF не реализовывают IDisposable, они полностью управляемые, откуда тогда идёт утечка? Ведь не используются неуправляемые ресурсы (если я верно помню прочитанное у Мак-Дональда) - это же не оболочка над GDI+.

А если есть утечка, то как с ней бороться?
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944709
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КНо как-то же все делают?
Кто все? Хеллоувордщики проектов "Пощупай дома после работы" или Вы про ту парочку конторок, которые имели неосторожность вляпаться в это гуано? ... которое даже по определению не совместимо с ранними версиями ))
Это ж пипец, политика мелкомягких всегда отличалась замечательной чертой - обратная совместимость. И тут на тебе, такой ляп. Людей, кто сидел (щупал дома) на третьей версии (и ранее) индусы отправили в топку. И перекроили "технологию" заново.
Вот что значит современный метод тестирования софта "на живых костях"

P.S. Вы не думайте, я не сторонник грексофилии, я просто пытаюсь рационально всё взвесить. Не более того.
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944724
i
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
i
Гость
CompositumАлексей КНо утечка в коде от codeproject, написанном каким-то рукожопом.. Чё уж совсем-то. :-)
Подскажите пожалуйста, как в процессе отладки в MS VS 2010 определить наличие утечки памяти и как с этим бороться?

1 , 2 ,
Ликбез для Муси
...
Рейтинг: 0 / 0
Как привязаться из ItemTemplate к свойству DataContext
    #36944753
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наш гавноед Сева неутолим
9723857
Плюс - меня не интересуют какие-то левые педали с каких-то левых сайтов. Ты кроме подобной левоты можешь что-то существенное заворачивать? Скучно с тобой стало и неинтересно. Евангелисты щас не в почёте, пиши дальше.
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Как привязаться из ItemTemplate к свойству DataContext
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]