Главная страница
Случайная страница
Разделы сайта
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Принудительная перерисовка окна
Если внимательно посмотреть на работающее приложение, то можно заметить один неприятный нюанс. Когда по щелчку мыши вызываются диалоговые окна и они перекрывают элементы меню или кнопки, то после закрытия диалогов интерфейсные элементы не перерисовываются. Это происходит потому, что элементы теряют фокус за счет переключения на другое окно и мышь уходит (leave) с них не по установленной схеме. Как заставить окно WPF перерисоваться (paint), я так и не нашел (пока), поэтому ничего не оставалось, как применить следующий 'убогий' способ...
- В файле Window1.xaml добавьте в открывающий дескриптор окна подписку на событие Activated
< Window x: Class=" Notepad1.Window1" xmlns=" https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns: x=" https://schemas.microsoft.com/winfx/2006/xaml" Title=" Window1: Управление состоянием источников команд" Width=" 500" Height=" 375" MinWidth=" 500" MinHeight=" 375" WindowStartupLocation=" CenterScreen" ResizeMode=" CanResizeWithGrip" Loaded=" Window_Loaded" Icon=" Notepad.ico" Closing=" Window_Closing" Activated=" Window_Activated" >.........................................< /Window> - Создайте обработчик Window_Activated() в файле Window1.xaml.cs и заполните его так
private void Window_Activated(object sender, EventArgs e) { this.Height = this.ActualHeight - 1; this.Height = this.ActualHeight + 1; this.txtBox1.Focus(); } - Испытайте приложение - окно снизу немного дергается, но возможно пользователь этого не заметит (кто сейчас смотрит под ноги!), зато интерфейсные элементы " не залипают"
|