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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2013, 19:47   #1
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
Вопрос Более универсальный конструктор (C# WPF)

Доброго времени суток!

Есть 2 конструктора класса GameField.

Код:
class GameField
{
	private const int SIZE = 10;
	public Rectangle[,] Cells = new Rectangle[SIZE, SIZE];

	public GameField(MainWindow w)
	{
		for (int i = 0; i < SIZE; i++)
		{
			for (int j = 0; j < SIZE; j++)
			{
				Cells[i, j] = new Rectangle();
				Cells[i, j].Width = 500;
				Cells[i, j].Height = 500;
				Cells[i, j].Fill = new SolidColorBrush(Colors.Black);
				w.wrapPanel.Children.Add(Cells[i, j]);
			}
		}
	}

	public GameField(MainWindow w, Panel p)
	{
		for (int i = 0; i < SIZE; i++)
		{
			for (int j = 0; j < SIZE; j++)
			{
				Cells[i, j] = new Rectangle();
				Cells[i, j].Width = 500;
				Cells[i, j].Height = 500;
				Cells[i, j].Fill = new SolidColorBrush(Colors.Black);
				//w.p.Children.Add(Cells[i, j]); //здесь компилятор ругается
			}
		} 
	}
}
Первый конструктор принимает один параметр типа MainWindow и добавляет на контрол типа WrapPanel с именем wrapPanel прямоугольник
Код:
w.wrapPanel.Children.Add(Cells[i, j]);
Второй конструктор я хочу сделать более универсальным, добавив еще один параметр (p типа Panel), но что делать дальше не понимаю, так ведь нельзя писать
Код:
w.p.Children.Add(Cells[i, j]);
Может кто подскажет как мне быть?
pashka_dos вне форума Ответить с цитированием
Старый 03.07.2013, 22:17   #2
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

ну да, он кажется и должен ругаться, первое, что надо изменить:
Код:
p.Children.Add(Cells[i, j]); //здесь компилятор ругается
вот так он должен кажется работать, вот пример с майкрософта
Olejik вне форума Ответить с цитированием
Старый 04.07.2013, 03:23   #3
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
Вопрос

Цитата:
Сообщение от Olejik Посмотреть сообщение
ну да, он кажется и должен ругаться, первое, что надо изменить:
Код:
p.Children.Add(Cells[i, j]); //здесь компилятор ругается
вот так он должен кажется работать, вот пример с майкрософта
Спасибо, но Вы, наверное, меня не поняли, мне нужно чтобы в конструктор передавались 2 параметра Window и Panel, Panel должен лежать на Window (у Window нету метода Children.Add()). А на Panel, в свою очередь, должны отрисовываться прямоугольники.
pashka_dos вне форума Ответить с цитированием
Старый 04.07.2013, 06:37   #4
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

а, ну тогда сначало Вам надо добавить в панель чилдрена (вот этого я не знаю, погуглить надо, я еще посмотрю, может у меня в проектах есть), а потом уже в Window
так:
Код:
public GameField(MainWindow w, Panel p)
	{
		for (int i = 0; i < SIZE; i++)
		{
			for (int j = 0; j < SIZE; j++)
			{
				Cells[i, j] = new Rectangle();
				Cells[i, j].Width = 500;
				Cells[i, j].Height = 500;
				Cells[i, j].Fill = new SolidColorBrush(Colors.Black);
				p.Children.Add(Cells[i, j]); //добавляем в панель
			}
		} 
w.Children.Add(p); //добавляем в window панель
	}
еще посмотрите, про StackPanel, там кажется есть добавление чилдренов, может Вам и пригодится
Olejik вне форума Ответить с цитированием
Старый 04.07.2013, 08:58   #5
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
w.Children.Add(p)
w.Content = p;

у окна нет свойства Children, т.к. оно не является наследником Panel
Один минус: окну можно задать Content лишь единожды
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 04.07.2013, 09:44   #6
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
w.Content = p;

у окна нет свойства Children, т.к. оно не является наследником Panel
Один минус: окну можно задать Content лишь единожды
да...тогда надо работать с гридом, в окне должен быть грид, выцепить этот грид и туда уже добавлять это все как угодно
Olejik вне форума Ответить с цитированием
Старый 04.07.2013, 11:06   #7
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

На 84,39% уверен, что задачу можно и нужно решить другим путем, но топикстартер не ввел нас в суть разрабатываемой программы)
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 04.07.2013, 11:13   #8
Olejik
Форумчанин
 
Регистрация: 02.06.2009
Сообщений: 218
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
На 84,39% уверен, что задачу можно и нужно решить другим путем, но топикстартер не ввел нас в суть разрабатываемой программы)
да уж что там мелочиться, можно натянуть и до 90-95%
я росто с таким сталкивался и, например имея грид, придавал ему имя, потом добавлял туда элементы (на уровне XAML), но в будущем, если необходимо было добавить туда textbox в ходе работы программы, я его создавал в коде, придавал ему по-моему имя, значения, ну все, что необходимо и уже добавлял к grid и прокатывало. Криво, противно, не камильфо в общем. Вообще должен быть метод менее изощренный, но его я пока не нашел, как говорится: плохо я гуглил
Olejik вне форума Ответить с цитированием
Старый 04.07.2013, 16:41   #9
pashka_dos
Пользователь
 
Аватар для pashka_dos
 
Регистрация: 19.11.2011
Сообщений: 83
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
w.Content = p;

у окна нет свойства Children, т.к. оно не является наследником Panel
Один минус: окну можно задать Content лишь единожды
Спасибо всем за ответы)
pashka_dos вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[C# + WPF] Отлов нажатий клавиш, хуки, горячие клавиши в проекте WPF Casper-SC WPF, UWP, WinRT, XAML 3 03.03.2017 15:00
С++ (конструктор, деструктор, копирующий конструктор) Jane-sad Помощь студентам 2 01.10.2010 10:01
класс Screen в WPF. Есть ли такой? [?] Не добавлять же сборку Forms в WPF Casper-SC Общие вопросы .NET 2 30.07.2010 15:10
Проблемы с отображением WPF форм. Конструктор вообще не открывается Casper-SC Общие вопросы .NET 1 14.03.2010 23:38
Какое программирование в наше время более востребовано и более рентабельно? iukash Свободное общение 18 29.10.2009 13:02