using System.Windows; using System.Windows.Input; using Bloxstrap.UI.ViewModels.Settings; using Wpf.Ui.Mvvm.Contracts; namespace Bloxstrap.UI.Elements.Settings.Pages { /// /// Interaction logic for FastFlagsPage.xaml /// 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.ShowFFlagEditorWarning) 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 _); } }