Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > .NET > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 29.03.2016, 00:57   #1
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
Репутация: 10
По умолчанию Варианты использования Children

Тут написано, что children является свойством, при помощи которого можно получить коллекцию UIElementCollection дочерних элементов объекта Panel.
Свойств и методов у children'a нет. Тем не менее, вот 2 вариант использования которые я встречал:
1. Вызывается метод Add.
Код:

myStackPanel.Children.Add(myButton);

2. В этом варианте я вообще не понял, что происходит. Хотя судя по всему обращение к 4-ому элементу.
Код:

StackPanel panel = (StackPanel)window.Content; 
Button okButton = (Button)panel.Children[4];

Откуда такие варианты использования берутся, если с МСДН нет информации об этом на странице children'a ?

Последний раз редактировалось hoz; 29.03.2016 в 01:08.
hoz вне форума   Ответить с цитированием
Старый 29.03.2016, 01:12   #2
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,485
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx
Alex11223 вне форума   Ответить с цитированием
Старый 29.03.2016, 19:44   #3
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Касательно Children я в упор не наблюдаю ничего перейдя по вашей ссылке...
hoz вне форума   Ответить с цитированием
Старый 29.03.2016, 19:46   #4
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,485
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Вы ж сами написали, что Children это UIElementCollection.
Alex11223 вне форума   Ответить с цитированием
Старый 29.03.2016, 20:53   #5
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Вы ж сами написали, что Children это UIElementCollection.
Это да. Но я не понял касательно применения Children'а. Вот, например, тут:
Код:

Window window = null; 
using (FileStream fs = 
    new FileStream("MyWindow.xaml", FileMode.Open, FileAccess.Read)) 
{ 
    // Получить корневой элемент. Мы знаем, что это Window 
    window = (Window)XamlReader.Load(fs); 
} 
// Найти кнопку OK, перебирая дочерние элементы (мы 
// пользуемся априорными знаниями о структуре документа!)  
StackPanel panel = (StackPanel)window.Content; 
Button okButton = (Button)panel.Children[4];

Почему в данном коде так Children[4] ?

А тут так вообще:
Код:

StackPanel myStackPanel = new StackPanel();
Button myButton = new Button();
myButton.Content = "Press me";
myStackPanel.Children.Add(myButton);

На Children'е вызывается метод Add(). С чего бы то вдруг?
hoz вне форума   Ответить с цитированием
Старый 29.03.2016, 20:58   #6
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,485
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Потому что в одном случае автор хотел добавить элемент, а в другом — получить элемент с номером 4.

Если что, Children объявлено вот так если все еще почему-то не поняли:
Код:

        public UIElementCollection Children
        {
            get
            {
                      ............
            }
        }

http://referencesource.microsoft.com...s/Panel.cs,170

Последний раз редактировалось Alex11223; 29.03.2016 в 21:02.
Alex11223 вне форума   Ответить с цитированием
Старый 29.03.2016, 22:14   #7
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
Репутация: 10
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Потому что в одном случае автор хотел добавить элемент, а в другом — получить элемент с номером 4.
То что в одном случает происходит добавление элемента (кнопки) я прекрасно понимаю. Но, в тот же момент, не нашёл почему, в данном случае, применимо Add(). Ведь с Children,ом нет в документации данных об этом. А обычно я смотрю методы или свойства, например, которыми обладают производные объекты интересуемого класса. У Children,а подобного же нет, как видно.

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Если что, Children объявлено вот так если все еще почему-то не поняли:
Код:

        public UIElementCollection Children
        {
            get
            {
                      ............
            }
        }

http://referencesource.microsoft.com...s/Panel.cs,170
Это понятно. Опять-таки тут видно, что Children не имеет параметров. А там индекс 4... Как так?
hoz вне форума   Ответить с цитированием
Старый 29.03.2016, 22:45   #8
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,485
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Цитата:
Ведь с Children,ом нет в документации данных об этом. А обычно я смотрю методы или свойства, например, которыми обладают производные объекты интересуемого класса. У Children,а подобного же нет, как видно.
А я вот так умею. Удачи в поиске методов и свойств к Name и FacepalmCount.

Код:

        class MyClass
        {
            public string Name { get; set; }
            public BigInteger FacepalmCount { get; set; }
        }

Цитата:
Опять-таки тут видно, что Children не имеет параметров. А там индекс 4... Как так?
Alex11223 вне форума   Ответить с цитированием
Старый 03.04.2016, 20:03   #9
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
Репутация: 10
По умолчанию

А вообще, UIElementCollection это элемент коллекции пользовательского интерфейса от слова User Interface ElementCollection? Вед так? Не нашёл я расшифровку нигде.. сам догадался.
Alex11223, второй вопрос после заполнения пробелов я всё-таки понял т.к. столкнулся уже на практике с индексаторами, которые до того изучал лишь в теории, но первый вопрос не осилил.
Ведь свойство .child имеет лишь метод GET. Т.е. теоретически имеется возможность вернуть дочерний элемент коллекции класса Panel. В данном же случае, элемент не возвращается через GET, а добавляется. Как это так? Ведь вопрос то логичный. Я уже пересмотрел этот фрагмент много раз и документацию перелистал, не понятно...
hoz вне форума   Ответить с цитированием
Старый 03.04.2016, 20:15   #10
Alex11223
Модератор
Заслуженный модератор
 
Регистрация: 12.01.2011
Сообщений: 16,485
Репутация: 3242

icq: 512-765
skype: alexp.frl
По умолчанию

Причем тут get у свойства Children? Это значит только, что вы не можете изменить это свойство (заменить ссылкой на другой экземпляр UIElementCollection и т.п.).

А сам индексатор в UIElementCollection и get, и set http://referencesource.microsoft.com...lection.cs,117

Только в коде выше никто ничего не меняет через него, а Add не имеет к нему отношения, и отсутствие set у того свойства его тоже никак не касается.

Свойства это ж по сути просто Something getSomething() и void setSomething(Something value).
Alex11223 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
children и результат парсера Тандер PHP 1 24.03.2014 12:47
Варианты в делфи Deoxes Помощь студентам 21 21.11.2013 05:10
Варианты сочетаний из n по k Deni3 Microsoft Office Excel 1 21.10.2013 07:07


07:36.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru