bloxstrap/Bloxstrap/UI/Elements/Settings/Pages/FastFlagsPage.xaml.cs
2024-10-28 17:09:24 +00:00

63 lines
1.8 KiB
C#

using System.Windows;
using System.Windows.Input;
using Bloxstrap.UI.ViewModels.Settings;
using Wpf.Ui.Mvvm.Contracts;
namespace Bloxstrap.UI.Elements.Settings.Pages
{
/// <summary>
/// Interaction logic for FastFlagsPage.xaml
/// </summary>
public partial class FastFlagsPage
{
private bool _initialLoad = false;
private FastFlagsViewModel _viewModel = null!;
public FastFlagsPage()
{
SetupViewModel();
InitializeComponent();
}
private void SetupViewModel()
{
_viewModel = new FastFlagsViewModel();
_viewModel.OpenFlagEditorEvent += OpenFlagEditor;
_viewModel.RequestPageReloadEvent += (_, _) => SetupViewModel();
DataContext = _viewModel;
}
private void OpenFlagEditor(object? sender, EventArgs e)
{
if (Window.GetWindow(this) is INavigationWindow window)
{
if (App.State.Prop.ShowFFlagEditorWarnings)
window.Navigate(typeof(FastFlagEditorWarningPage));
else
window.Navigate(typeof(FastFlagEditorPage));
}
}
private void Page_Loaded(object sender, RoutedEventArgs e)
{
// refresh datacontext on page load to synchronize with editor page
if (!_initialLoad)
{
_initialLoad = true;
return;
}
SetupViewModel();
}
private void ValidateInt32(object sender, TextCompositionEventArgs e) => e.Handled = e.Text != "-" && !Int32.TryParse(e.Text, out int _);
private void ValidateUInt32(object sender, TextCompositionEventArgs e) => e.Handled = !UInt32.TryParse(e.Text, out uint _);
}
}