/
Vagabond132
/
TerrariaCourse
Обзор
Документация
Войти
/
Vagabond132
/
TerrariaCourse
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
Windows
WpfView/Menu/ViewMenuMainWpf.cs
166 строк
5 KB
Vagabond132
Доделан WPF
11 янв 2025, 07:02
11 янв 2025, 07:02
9933dfa
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; using System.Windows.Input; using System.Windows.Media; using System.Windows; using View.Menu; namespace WpfView.Menu { /// <summary> /// Отображение меню /// </summary> public class ViewMenuMainWpf : View.Menu.ViewMenu { /// <summary> /// Надпись для заголовка /// </summary> private Label _labelHeader; /// <summary> /// Делегат нажатия на кнпоку /// </summary> public delegate void dKeyPressed(object sender, KeyEventArgs args); /// <summary> /// Событие нажатия на кнопку /// </summary> public event dKeyPressed OnKeyPressed; /// <summary> /// Панель /// </summary> private Panel _parentControl; /// <summary> /// Конструктор отображения /// </summary> /// <param name="parMenu">Меню</param> /// <param name="parParentControl">Панель</param> public ViewMenuMainWpf(Model.Menu.Menu parMenu, Panel parParentControl) : base(parMenu) { ApplicationWindow.GetWindow().Dispatcher.Invoke(() => { if (parParentControl == null) { _parentControl = new StackPanel(); } else { _parentControl = parParentControl; } _labelHeader = new Label(); Init(); Draw(); }); } /// <summary> /// Создать элемент /// </summary> /// <param name="parMenuItem">Элемент меню</param> /// <returns></returns> protected override ViewMenuItem CreateItem(Model.Menu.MenuItem parMenuItem) { if (parMenuItem is Model.Menu.SubMenuItem) return new ViewSubMenuItemWPF((Model.Menu.SubMenuItem)parMenuItem); else if (parMenuItem is Model.Menu.MenuItem) return new ViewMenuItemWpf(parMenuItem); return null; } /// <summary> /// Конструктор отображения /// </summary> /// <param name="parMenu">Меню</param> public ViewMenuMainWpf(Model.Menu.Menu parMenu) : this(parMenu, null) { } /// <summary> /// Инициализация /// </summary> private void Init() { Window window = ApplicationWindow.GetWindow(); View.Menu.ViewMenuItem[] menu = Menu; window.Width = 800; window.Height = 600; window.Content = null; _parentControl.Children.Clear(); _parentControl.VerticalAlignment = VerticalAlignment.Stretch; _parentControl.HorizontalAlignment = HorizontalAlignment.Stretch; _parentControl.Children.Add(_labelHeader); foreach (ViewMenuItem item in menu) { ((ViewMenuItemWpf)item).SetParentControl(_parentControl); //item.Draw(); } window.Content = _parentControl; window.KeyDown += (object parSender, KeyEventArgs parArgs) => OnKeyPressed?.Invoke(parSender, parArgs); window.Show(); } /// <summary> /// Закрыть /// </summary> public void Close() { ApplicationWindow.GetWindow().Close(); } /// <summary> /// Нарисовать /// </summary> public override void Draw() { ApplicationWindow.GetWindow().Dispatcher.Invoke(() => { DrawTitle(); foreach (ViewMenuItem item in Menu) { item.Draw(); } }); } /// <summary> /// Нарисовать заголовок /// </summary> protected void DrawTitle() { _labelHeader.Content = "Главное меню"; _labelHeader.FontSize = 30; _labelHeader.Foreground = new SolidColorBrush(Colors.Orange); _labelHeader.Height = 70; _labelHeader.Margin = new Thickness(0, 210, 0, 0); _labelHeader.VerticalContentAlignment = VerticalAlignment.Top; _labelHeader.HorizontalAlignment = HorizontalAlignment.Center; } /// <summary> /// Создать отображение пункта меню /// </summary> /// <param name="parMenuItem">Пункт меню</param> /// <returns></returns> //protected override ViewMenuItem CreateItem(Model.Menu.MenuItem parMenuItem) //{ // return new ViewMenuItemWpf(parMenuItem); //} /// <summary> /// Перерисовать /// </summary> protected override void NeedRedraw() { Draw(); } } }