Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> поиск контейнера по элементу 
:(
    Опции темы
hexzo
Дата 29.8.2011, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



У меня есть ListBox а в нём TextBox.
Код

<ListBox>
  <TextBox/>
</ListBox>


Как мне имея ссылку лишь на TextBox получить ссылку на ListBox его в себе содержащий.

Это сообщение отредактировал(а) hexzo - 29.8.2011, 10:10
PM MAIL   Вверх
hexzo
Дата 29.8.2011, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Это может делаться вот так
Код

b1.Click += (sender, EventArgs) =>
        {
          Console.WriteLine(
            LogicalTreeHelper.GetParent(sender as Button) != null
          );
        };



Но если это делается для шаблонного элемента, то способ не работает.

Код

  FrameworkElementFactory facElem = new FrameworkElementFactory(typeof(TextBox));

  System.Windows.Input.KeyEventHandler d = (sender, e) => {
    if (e.Key == System.Windows.Input.Key.Return)          
      Console.WriteLine(
        LogicalTreeHelper.GetParent(sender as TextBox) != null // предок равен нулю
      );
    }
  };

  facElem.AddHandler(TextBox.KeyDownEvent, d );
  dataTemplate.VisualTree = facElem;
  return dataTemplate;


Это сообщение отредактировал(а) hexzo - 29.8.2011, 15:10
PM MAIL   Вверх
tol05
Дата 29.8.2011, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1632
Регистрация: 21.12.2006
Где: Харьков

Репутация: 3
Всего: 170



попробуйте использовать свойство TemplatedParent.
Псевдокод:

TextBox textBox = (TextBox)e.OriginalSource;
var parent = LogicalTreeHelper.GetParent(textBox.TemplatedParent);


--------------------
На хорошей работе и сны хорошие снятся.
PM MAIL   Вверх
hexzo
Дата 30.8.2011, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 178
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



О пасибо. Методом научного тыка получилось, но мне кажется можно сделать как нибудь попроще. Ну что бы не через всё нутро лезть, со стороны заднего фасада.  smile 
Код

            var p1 = LogicalTreeHelper.GetParent( (sender as TextBox).TemplatedParent );
            Console.WriteLine(p1.GetType());
            var p2 = LogicalTreeHelper.GetParent(p1);
            Console.WriteLine(p2.GetType());
            var p3 = System.Windows.Media.VisualTreeHelper.GetParent(p2);
            Console.WriteLine(p3.GetType());
            var p4 = System.Windows.Media.VisualTreeHelper.GetParent(p3);
            Console.WriteLine(p4.GetType());
            var p5 = System.Windows.Media.VisualTreeHelper.GetParent(p4);
            Console.WriteLine(p5.GetType());
            var p6 = System.Windows.Media.VisualTreeHelper.GetParent(p5);
            Console.WriteLine(p6.GetType());
            var p7 = System.Windows.Media.VisualTreeHelper.GetParent(p6);
            Console.WriteLine(p7.GetType());
            var p8 = System.Windows.Media.VisualTreeHelper.GetParent(p7);
            Console.WriteLine(p8.GetType());
            var p9 = System.Windows.Media.VisualTreeHelper.GetParent(p8);
            Console.WriteLine(p9.GetType());
            var p10 = System.Windows.Media.VisualTreeHelper.GetParent(p9);
            Console.WriteLine(p10.GetType());
            var p11 = System.Windows.Media.VisualTreeHelper.GetParent(p10);
            Console.WriteLine(p11.GetType());
            Console.WriteLine( ((ListView)p11).Name );

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0601 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.