Welcome to UWP, Microsoft's pride and joy, where even the most mundane tasks feel like brain surgery.
I have a workaround for this - I found it somwhere on github:
// https://github.com/stammen/WindowSizing
public class try_resize_main_window {
private readonly Page page_;
private ThreadPoolTimer m_timer;
private bool resized_already_ = false;
public try_resize_main_window(Page page) {
page_ = page;
page.Loaded += on_loaded;
}
public void OnWindowSizeChanged(object sender, WindowSizeChangedEventArgs e)
{
if (m_timer != null)
{
m_timer.Cancel();
m_timer = null;
}
TimeSpan period = TimeSpan.FromSeconds(1.0);
m_timer = ThreadPoolTimer.CreateTimer(async (source) => {
if (!resized_already_)
await page_.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => {
if (!resized_already_) {
resized_already_ = true;
ApplicationView.GetForCurrentView().TryResizeView(ui_util.preferred_launch_size());
m_timer.Cancel();
}
});
else
m_timer.Cancel();
}, period);
}
private void on_loaded(object sender, RoutedEventArgs e)
{
var result = ApplicationView.GetForCurrentView().TryResizeView(ui_util.preferred_launch_size());
Debug.WriteLine("OnLoaded TryResizeView: " + result);
page_.Loaded -= on_loaded;
}
}
I would use it like this: on my main page class's constructor, I would do this:
public partial class main_ui_window:Page {
private try_resize_main_window try_resize_;
public main_ui_window() {
InitializeComponent();
try_resize_ = new try_resize_main_window(this);
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
Window.Current.SizeChanged += try_resize_.OnWindowSizeChanged;
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
base.OnNavigatedFrom(e);
Window.Current.SizeChanged -= try_resize_.OnWindowSizeChanged;
}
...
Hope this helps.
Best,
John