Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
 Аватар для Anonymous4722
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 545

Как сделать так, когда я ввожу информацию в окне 2, то она появлялась в главном окне тобишь в окне 1?

22.03.2020, 15:07. Показов 2236. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем нужно создать просто приложение по типу инсталятора с кнопками далее или назад. И я ввожу информацию в textbox допустим и она появляется в главном окне, нажимаю далее ввожу информацию в окне 2 и она появляется в главном окне. Вот мой код, но пока не работает:
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<Window x:Class="win.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:win"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <StackPanel>
            <Label Content="Ввести данные студента. Для этого нажмите Далее." FontSize="20"/>
            <Button Content="Далее" Height="50" Width="50" Click="Button_Click"/>
            <TextBlock x:Name="myTextBlock" Text="{Binding ElementName=myTextBox,Path=Text}" Height="30" />
        </StackPanel>
    </Grid>
</Window>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 
namespace win
{
    /// <summary>
    /// Логика взаимодействия для MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Window1 window1 = new Window1();
            window1.Show();
        }
    }
}
XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Window x:Class="win.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:win"
        mc:Ignorable="d"
        Title="Window1" Height="450" Width="800">
    <Grid>
        <StackPanel>
            <Label Content="ФИО" FontSize="20"/>
            <TextBox x:Name="myTextBox" Height="30" />
        </StackPanel>
    </Grid>
</Window>
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.03.2020, 15:07
Ответы с готовыми решениями:

Как сделать так, чтобы при нажатии кнопки на дочернем окне, в родительском окне открылась какая-нибудь страница ?
Как сделать так, чтобы при нажатии кнопки на дочернем окне, в родительском окне открылась какая-нибудь страница ? При этом, поп-ап нужно...

Как отобразить информацию (введенную в форму), в новом окне и во всплывающем окне?
Подскажите пожалуйста, у меня есть форма в нее делаю запись, как сделать так, что бы после введения данных они отобразились в 2 ух окнах...

Сделать возможным создание вкладок в окне Проводника, как в окне Google Chrome
Всем здравствуйте, смотрел видео уроки в инете и наткнулся на данную плюшку. Очень удобное украшает интерфейс Windows. Это патч или где то...

13
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16113 / 11234 / 2887
Регистрация: 21.04.2018
Сообщений: 33,035
Записей в блоге: 2
22.03.2020, 15:18
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Вот мой код, но пока не работает:
Надо передавать контекст данных.
Посмотрите простой пример Скрытие элемента другой формы, которая уже открыта
0
 Аватар для Anonymous4722
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 545
22.03.2020, 16:08  [ТС]
Элд Хасп, Там где ViewModel это какое конкретное окно и куда это писать надо? В Главное окно или в окно 1??
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16113 / 11234 / 2887
Регистрация: 21.04.2018
Сообщений: 33,035
Записей в блоге: 2
22.03.2020, 17:01
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Там где ViewModel это какое конкретное окно и куда это писать надо?
ViewModel устанавливается в контекст данных основного окна (первого).
XML
1
2
3
    <Window.DataContext>
        <local:ViewModel/>
    </Window.DataContext>
Во второе окно она передается из контекста в контекст при его создании
XML
22
23
24
25
26
27
28
29
30
31
32
33
    <x:Code>
        <![CDATA[
        private void window_Loaded(object sender, RoutedEventArgs e)
        {
            new ChildWind()
            {
                DataContext = DataContext
            }
            .Show();
        }
        ]]>
    </x:Code>
0
 Аватар для Anonymous4722
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 545
22.03.2020, 17:29  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
<![CDATA[
private void window_Loaded(object sender, RoutedEventArgs e)
{
new ChildWind()
{
DataContext = DataContext
}
.Show();
}
]]>
А зачем это надо было комментировать?

Добавлено через 4 минуты
Цитата Сообщение от Элд Хасп Посмотреть сообщение
<![CDATA[
И что это такое CDATA?? Это чтобы за комментировать или что? Или чтобы код прописать?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16113 / 11234 / 2887
Регистрация: 21.04.2018
Сообщений: 33,035
Записей в блоге: 2
22.03.2020, 17:47
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
И что это такое CDATA??
Прочитайте за <x:Code>.
Можно задать в Code-Behind
C#
1
2
3
4
5
6
7
8
        private void window_Loaded(object sender, RoutedEventArgs e)
        {
            new ChildWind()
            {
                DataContext = DataContext
            }
            .Show();
        }
А можно в XAML как я.
Это одно и тоже.
0
 Аватар для Anonymous4722
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 545
22.03.2020, 17:54  [ТС]
Элд Хасп, И еще у вас там этот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/// <summary>ViewModel - предназначена для передачи в Контекст Данных окна</summary>
    public class ViewModel : OnPropertyChangedClass
    {
        private bool _value;
        /// <summary>Неизменяемое свойство для привязок в View.
        /// Значение свойства может изменить только сама ViewModel</summary>
        public bool Value { get => _value; private set => SetProperty(ref _value, value); }
 
        private RelayCommand _changeCommand;
        /// <summary>Команда изменяющее значение Value</summary>
        public RelayCommand ChangeCommand => _changeCommand
               ?? (_changeCommand = new RelayCommand(_ => Value = !Value));
 
        private RelayCommand _messageShowCommand;
        /// <summary>Команда показывающая "Привет!"
        /// В команду передаётся методо её состояния.
        /// В это методе проверяется полученный параметр команды.
        /// Если равен <see langword="true"/>, то  команду можно исполнить</summary>
        public RelayCommand MessageShowCommand => _messageShowCommand
            ?? (_messageShowCommand = new RelayCommand(_ => MessageBox.Show("Привет!"), p => p is bool val && val));
    }
Я сделал так и у меня не работает. Зачем этот код нужен? Или это и есть окно 1?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16113 / 11234 / 2887
Регистрация: 21.04.2018
Сообщений: 33,035
Записей в блоге: 2
22.03.2020, 18:39
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Я сделал так и у меня не работает. Зачем этот код нужен? Или это и есть окно 1?
Этот код называется ViewModel.
И он служит (в данном) для передачи данных между окнами.

Вы знаете что такое привязки, контекст данных, команды?
0
 Аватар для Anonymous4722
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 545
22.03.2020, 18:45  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вы знаете что такое привязки, контекст данных, команды?
Нет.

Добавлено через 3 минуты
Элд Хасп, Вот у меня задание такое: В приложении должен быть описан класс "студент", приложение позволяет создавать объект "студента" и заполнять его свойства с помощью мастера (последовательности окон с полями ввода и кнопками "дальше", "назад", "отмена"). После завершения создания "студента", информация о нем отображается на главном окне.
Прислать код XAML, C# и скриншоты работы программы.


И там в конце написано, что информация о студенте отображается на главном окне. Надо создавать просто новые окна. Я понял как Binding работает в одном окне, а как сделать чтобы все данные, что я введу появились на главном окне допустим в TextBlock? Я вот этого не могу понять.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16113 / 11234 / 2887
Регистрация: 21.04.2018
Сообщений: 33,035
Записей в блоге: 2
22.03.2020, 19:04
Лучший ответ Сообщение было отмечено Anonymous4722 как решение

Решение

Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Нет.
Это плохо.
WPF без всего этого работать не будет.
Я вам код специально сделанный под ваш пример, но не зная принципов работы с WPF, вы в другой аналогичной задаче то вряд ли сможете его повторить или адаптировать. Я уже не говорю о том, что как-то усложнить задачу.
Нужно понимание азов, основ WPF и MVVM.

Берёте класс отсюда Новая реализация OnPropertyChangedClass [WPF, Элд Хасп]

Изменяете Code-Behind основного окна
C#
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }
 
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            new Window1()
            { 
                DataContext = DataContext
            }
            .Show();
        }
    }
 
    /// <summary>ViewModel - предназначена для передачи в Контекст Данных окна</summary>
    public class ViewModel : OnPropertyChangedClass
    {
        private string _text;
 
        public string Text { get => _text; set => SetProperty(ref _text, value); }
    }
XAML Основного окна
XML
9
10
11
12
13
14
15
16
17
18
19
20
    mc:Ignorable="d">
    <Window.DataContext>
        <local:ViewModel/>
    </Window.DataContext>
    <Grid>
        <StackPanel>
            <Label Content="Ввести данные студента. Для этого нажмите Далее." FontSize="20"/>
            <Button Content="Далее" Height="50" Width="50" Click="Button_Click"/>
            <TextBlock Text="{Binding Path=Text}" Height="30" />
        </StackPanel>
    </Grid>
</Window>
Xaml дочернего окна
XML
9
10
11
12
13
14
15
16
17
18
    <d:Window.DataContext>
        <local:ViewModel/>
    </d:Window.DataContext>
    <Grid>
        <StackPanel>
            <Label Content="ФИО" FontSize="20"/>
            <TextBox Text="{Binding Text}" Height="30" />
        </StackPanel>
    </Grid>
</Window>
Добавлено через 1 минуту
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Элд Хасп, Вот у меня задание такое:
Вы не сможете "методом тыка" сделать это задание.
1
 Аватар для Anonymous4722
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 545
22.03.2020, 19:37  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
MVVM
Например мы этого не проходили?
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вы не сможете "методом тыка" сделать это задание.
Я смог, все заработало!
Миниатюры
Как сделать так, когда я ввожу информацию в окне 2, то она появлялась в главном окне тобишь в окне 1?  
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16113 / 11234 / 2887
Регистрация: 21.04.2018
Сообщений: 33,035
Записей в блоге: 2
22.03.2020, 19:43
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Например мы этого не проходили?
WPF - это специально созданный инструмент для реализации View в паттерне MVVM.
Очень жаль, что вы это не проходили.
Так как использование WPF вне этого паттерна крайне затрудняет реализацию решения в целом.

Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Я смог, все заработало!
Вариант из предыдущего поста?
0
 Аватар для Anonymous4722
5 / 3 / 2
Регистрация: 29.11.2012
Сообщений: 545
22.03.2020, 19:50  [ТС]
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Очень жаль, что вы это не проходили.
Это задание по теме Элементы управления.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Вариант из предыдущего поста?
Да, вариант сработал хорошо, но что-то кода очень много и усложнено все только из-за того, чтобы можно было сохранять информацию на главном окне (или просто там отобразить после завершения ввода в других окнах). Мне кажется можно как-то сделать проще.
Цитата Сообщение от Элд Хасп Посмотреть сообщение
Так как использование WPF вне этого паттерна крайне затрудняет реализацию решения в целом.
Да, затруднительно было без знаний.
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16113 / 11234 / 2887
Регистрация: 21.04.2018
Сообщений: 33,035
Записей в блоге: 2
22.03.2020, 19:59
Цитата Сообщение от Anonymous4722 Посмотреть сообщение
Мне кажется можно как-то сделать проще.
Показано типовое для WPF решение.
Вам оно кажется сложным, скорее всего только из-за очень плохого преподавания вам ООП.

В самом простом случает, для расширения добавляете в ViewModel нужные свойства.
Обязательно используя аналогичную свойству Text реализацию.

Но для обработки кнопок вам надо ещё изучить и понять команды.
Это тоже неотъемлемая часть WPF.
Иначе такую гору костылей наворочаете, что сами разобраться не сможете.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.03.2020, 19:59
Помогаю со студенческими работами здесь

Как по нажатию кнопки в открытом новом окне сделать рефреш в том окне откуда оно было открыто?
Открываю скриптом новое окно. Как по нажатию кнопки в открытом новом окне сделать рефреш в том окне откуда оно было открыто.

Сделать листбокс в главном окне программы средствами WinAPI
Возможно глупый вопрос поскольку я только только начал изучать с++. Во общем мне поставлена задача сделать листбокс в главном окне...

как обращаться к элементам на главном окне???
Вопрос от чайника........ Я создал пустой прокт в QTCreator с MainWindow......Положил на форму одну кнопочку......и как мне обратиться...

Как сделать ссылку, чтобы она открывала страницу в другом окне
Уважаемые господа программисты подскажите пожалуйста как на пхп написать код чтобы из sidebar.php ссылка открывала страницу в файле...

Как разместить элементы управления в главном окне?
Здравствуйте! Изучаю сейчас я Win32 API и вот у меня назрел такой вопрос. В моей книге по Win32 API оговаривается только создание элементов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru