Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2016, 23:57   #1
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию Варианты использования 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 в 00:08.
hoz вне форума Ответить с цитированием
Старый 29.03.2016, 00:12   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

https://msdn.microsoft.com/en-us/lib...vs.110%29.aspx
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.03.2016, 18:44   #3
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

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

Вы ж сами написали, что Children это UIElementCollection.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.03.2016, 19:53   #5
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

Цитата:
Сообщение от 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, 19:58   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Если что, Children объявлено вот так если все еще почему-то не поняли:
Код:
        public UIElementCollection Children
        {
            get
            {
                      ............
            }
        }
http://referencesource.microsoft.com...s/Panel.cs,170
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

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

Цитата:
Сообщение от 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, 21:45   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

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

Код:
        class MyClass
        {
            public string Name { get; set; }
            public BigInteger FacepalmCount { get; set; }
        }
Цитата:
Опять-таки тут видно, что Children не имеет параметров. А там индекс 4... Как так?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.04.2016, 19:03   #9
hoz
Форумчанин
 
Аватар для hoz
 
Регистрация: 29.06.2013
Сообщений: 132
По умолчанию

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

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

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

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

Свойства это ж по сути просто Something getSomething() и void setSomething(Something value).
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
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