Как обновить окно wpf c
Перейти к содержимому

Как обновить окно wpf c

  • автор:

Начало работы (WPF)

Windows Presentation Foundation (WPF) — это платформа пользовательского интерфейса для создания клиентских приложений для настольных систем. Платформа разработки WPF поддерживает широкий набор компонентов для разработки приложений, включая модель приложения, ресурсы, элементы управления, графику, макет, привязки данных, документы и безопасность. Она является частью платформы .NET Framework, и если ранее вы создавали приложения в .NET Framework с помощью ASP.NET или Windows Forms, то эта среда программирования должна быть вам знакома. WPF использует расширяемый язык разметки для приложений (XAML), чтобы предоставить декларативную модель для программирования приложений. В этот раздел включены темы, содержащие вводные сведения и помогающие начать работу с WPF.

С чего начать?

Действие Перейти к
Необходимо перейти непосредственно к… Пошаговое руководство. Создание первого классического приложения WPF
Как проектировать пользовательский интерфейс приложения? Проектирование XAML в Visual Studio
Не знакомы с .NET? Общие сведения о платформе .NET Framework

См. также

  • Библиотека классов
  • Разработка приложений
  • Центр разработчиков .NET Framework

Новое окно в WPF C#

1. Ну тут проблем, я думаю не возникнет, создаёте экземпляр класса Window1 и вызываете методом Show(). 2. Тут можно попробовать использовать UserControl, чтобы содержимое MainWindow подменялось при нажатии на кнопку на UserControl

14 мар 2018 в 19:22
С первым получилось. Можете, пожалуйста, показать, как использовать UserControl?
14 мар 2018 в 19:28

Сейчас, увы, сам написать не смогу, но вот то что вам нужно, правда там идёт реализация паттерна MVVM ru.stackoverflow.com/a/765122/285928

14 мар 2018 в 19:30
Если до утра никто не ответит, распишу сам
14 мар 2018 в 19:31
Возможный дубликат вопроса: Отображение разного содержимого в одном окне WPF + MVVM
– user227049
14 мар 2018 в 21:23

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Для того, чтобы один и тот же контент можно было использовать в разных местах, проще всего использовать UserControl .

Таким образом, ваш код будет структурирован следующим образом:

Заводите окно Window1 так:

Теперь, если нужно показать окно, вы создаёте new Window1() и вызываете метод Show() . Если же нужно показать содержимое окна в другом окне, внутри некоторого элемента, пишете

mainWindow.Content = new Window1Content(); 
mainGrid.Children.Clear(); mainGrid.Children.Add(new Windows1Content()); 

Если вы пользуетесь MVVM (а как же без него?), не забудьте установить правильный DataContext .

Как обновить окно в wpf?

У меня есть небольшой проект, над которым я работаю, — это окно с 4 вкладками WPF на нем. Первая вкладка — это то, где я выполняю большую часть работы, но иногда мне нужно вернуться на другие вкладки. На одной из этих вкладок есть DataGrid, привязанный к списку, на который влияет основная вкладка, на которой я остаюсь. Когда я обновляю что-то на первой вкладке, мне это нужно, чтобы вызвать обновление данных в Datagrid (обычно просто для обновления значения). Единственный способ, которым он работал, — это если я сам нажму на заголовок. Как это сделать в коде? Спасибо

TheJediCowboy 06 фев. 2011, в 23:37

Как обновить окно wpf c

Рассмотрим, как мы можем взаимодействовать с несколькими окнами в WPF. Для этого создадим новый проект. По умолчанию он уже содержит одно главное окно MainWindow. Теперь добавим еще одно окно. Для этого в окне добавления нового элемента нам надо выбрать тип «Window (WPF)»:

Добавление окна в WPF

Назовем его TaskWindow .

Теперь определим на главном окне MainWindow кнопку для открытия нового окна:

Обработчик нажатия кнопки Button_Click будет выглядеть так:

private void Button_Click(object sender, RoutedEventArgs e)

Для открытия нового окна создаем его объект и затем вызываем метод Show() .

Взаимодействие между окнами в WPF

При нажатии на кнопку открывается окно TaskWindow.

Используя ссылку на окно, мы можем взаимодействовать с ним, например, передавать ему данные из главной формы или вызывать его методы. Например, изменим код C# класса TaskWindow:

using System.Windows; namespace WindowApp < public partial class TaskWindow : Window < public string ViewModel < get; set; >public TaskWindow() < InitializeComponent(); >public void ShowViewModel() < MessageBox.Show(ViewModel); >> >

Здесь добавлено свойство ViewModel и метод, который отображает его содержимое. Теперь изменим обработчик Button_Click в главном окне MainWindow:

private void Button_Click(object sender, RoutedEventArgs e)

Здесь у окна TaskWindow устанавливается свойство ViewModel и вызывается его метод.

Важно отметить, что после открытия эти окна существуют независимо друг от друга. Мы можем закрыть главное окно MainWindow, и второе окно TaskWindow все равно продолжит свою работу. Однако мы можем задать и другое поведение.

У всех окон есть свойство Owner , которое указывает на главное окно, владеющее текущим окном. Так, изменим обработчик Button_Click в главном окне:

private void Button_Click(object sender, RoutedEventArgs e) < TaskWindow taskWindow = new TaskWindow(); //Теперь MainWindow главное окно для taskWindow taskWindow.Owner = this; taskWindow.Show(); >

Теперь текущий объект MainWindow является владельцем taskWindow. Если, к примеру, мы закроем MainWindow, то закроется и TaskWindow.

Кроме того, мы можем обращаться из TaskWindow к своему владельцу:

public partial class TaskWindow : Window < public void ChageOwnerBackground() < this.Owner.Background = new SolidColorBrush(Colors.Red); >// остальной код >

С другой стороны все зависимые окна доступны в главном окне-владельце через свойство OwnedWindows :

private void Button_Click(object sender, RoutedEventArgs e) < TaskWindow taskWindow = new TaskWindow(); taskWindow.Owner = this; taskWindow.Show(); foreach(Window window in this.OwnedWindows) < window.Background = new SolidColorBrush(Colors.Red); if (window is TaskWindow) window.Title = "Новый заголовок!"; >>

Класс App и свойство Windows

Еще одним способ для взаимодействия с окнами предоставляет класс App — главный класс приложения. Он содержит свойство Windows , которое хранит информацию обо всех открытых окнах приложения. И в любом месте программы мы можем получить эту информацию:

foreach(Window window in App.Current.Windows) < window.Background = new SolidColorBrush(Colors.Red); // если окно - объект TaskWindow if (window is TaskWindow) window.Title = "Новый заголовок!"; >

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *