Сетка, полная текстовых полей, С#, XAML

для начала я должен сказать, когда я не так хорош в английском, так что я извиняюсь за свои ошибки и грамматику. У меня есть простое расписание, созданное из множества текстовых полей, которые находятся в групповой сетке. У меня есть одна кнопка, которая служит для добавления текста в текстовые поля. Пользователь добавит текст в тексбокс, нажмет кнопку (Создать) и создаст полное расписание, какое ему нужно. И есть проблема. Я мог бы сохранить весь ввод вручную в методе SaveState следующим образом: e.PageState["something"] = gui_Something.Text; , но у меня есть 3 сетки, в которых 40 текстовых полей... Мне нужен какой-то способ сохранить все это одним методом или что-то в этом роде. Похоже на поле, но это не так. В поле я могу сделать что-то вроде:

int[] field = new int[5];
        int some = 0;
        for (int i = 0; i < field.Length; i++)
        {
            field[i] = some;
            e.PageState["Something" + i] = gui_poznamky.Text;
        }

но моя сетка, полная текстовых полей, не является полем xD

Может кто-то мне помочь, пожалуйста? Я новичок, недавно начал заниматься программированием, поэтому иногда мне нужна помощь. Спасибо за все ответы и еще раз извините за мой английский (:


person GrowSing    schedule 14.11.2013    source источник
comment
Изучите MVVM, прежде чем писать хоть одну строчку кода в WPF.   -  person Federico Berasategui    schedule 14.11.2013
comment
Или хотя бы изучите WPF. В WPF мы манипулируем данными, а не элементами управления пользовательского интерфейса. Вместо того, чтобы вручную создавать 40 TextBoxes в Grid контейнерах, вы должны были создать собственный класс для хранения ваших данных, а затем Bind передать их в свойство ItemsSource элемента управления коллекцией для их отображения. Затем, добавив простой DataTemplate, вы могли позволить WPF сгенерировать для вас ваш пользовательский интерфейс. Наконец, чтобы сохранить все это, вы должны взглянуть на Использование настроек в C# на странице MSDN.   -  person Sheridan    schedule 14.11.2013
comment
@Шеридан, вот о чем я говорю   -  person Federico Berasategui    schedule 14.11.2013
comment
Я знаю @HighCore, но я предполагаю, что этот чувак не знал. ;)   -  person Sheridan    schedule 14.11.2013
comment
Во-первых, я должен сказать, что у меня нет никакого опыта, и я учусь один для себя, у меня нет учителя, который сказал бы мне, как это работает или что я должен делать, или что существует что-то вроде MVVM, я слышал слово MVVM впервые. Я благодарю вас за некоторые новые вещи, которые я должен узнать, я сделаю это, но это мой ПЕРВЫЙ проект, и я хочу завершить его так. Есть ли какой-нибудь простой способ сделать это, или я должен удалить его и пометить звездочкой ..?   -  person GrowSing    schedule 14.11.2013
comment
@GrowSing да, вы должны удалить все и начать все сначала. Опубликуйте скриншот того, что вы пытаетесь сделать, и мы подскажем, как правильно это сделать в WPF. Кстати, я тоже самообучающийся человек, и у меня тоже нет учителей, но я постоянно стремлюсь создавать чистый и красивый код.   -  person Federico Berasategui    schedule 14.11.2013


Ответы (1)


Вы можете попробовать что-то вроде этого, чтобы перебрать все элементы управления в сетке, а затем выполнить какую-то причудливую работу, чтобы найти, где должны быть сохранены данные каждого текстового поля...

foreach (Control childCtrl in MainGrid.Children)
{
    if (childCtrl is TextBox)
    {
        TextBox Txtbox = (TextBox)childCtrl;
        Console.WriteLine("Found Textbox: " + Txtbox.Name);
    }
}
person Mike Monge    schedule 14.11.2013