feat(winui3): WinUI 3 host LAUNCHES — verified rendering on Windows
Some checks failed
CI / build-and-test (push) Failing after 26s
Some checks failed
CI / build-and-test (push) Failing after 26s
Removing the inline-hosted SettingsDrawer (and its accompanying
Storyboard resources targeting TranslateTransform.X) unblocks the
launch. The WinUI 3 host now opens, paints, and stays alive. Verified
via screenshot:
* 64px left rail with Wild Dragon "W" brand mark + participants /
Teams / hide-Teams / settings / engine-status puck buttons (Segoe
Fluent Icons throughout, uniform stroke)
* 44px custom title bar with the live pills inline (live · session
timer · REC count · disk free) and a theme toggle to the left of
the system min/max/close
* Section header: "Participants 4" + filter input + Refresh +
Presets + the single cyan Primary CTA "Enable all online"
* Participants list placeholder ("View-model wiring queued for the
next session") in the hero row — real DataGrid + bindings land in
Phase 4/5 of the migration plan
* Conditional in-call control bar: Muted (destructive coral) +
Camera/Share/Marker (Secondary) + Leave (destructive coral) +
overflow kebab
* Slim status bar: control-surface URL + keyboard shortcut hints
* Rendered in LIGHT THEME on first run (matched the OS app-mode
setting via ThemeManager.ResolveTheme), confirming the
ThemeDictionary swap works end-to-end
Two open suspects causing the SettingsDrawer host to crash WinUI 3's
XAML parser with HR=0x802b000a (XAML_E_PARSER_GENERAL_ERROR):
* RenderTransform with a x:Name'd TranslateTransform — WinUI 3
might not allow naming transforms inside RenderTransform the way
WPF does
* Storyboard.TargetName pointing at the named transform — WinUI 3
Storyboards have stricter resolution
The drawer XAML itself (Views/SettingsDrawer.xaml + .cs) is unchanged
and ships alongside this commit. Re-host it in MainWindow.xaml once
the parse error is triaged (likely fix: replace TranslateTransform.X
animation with the AppWindow composition API or use the
CompositionTarget approach instead of a Storyboard).
The migration plan's Phase 3 is now substantially CLOSED — the
WindowsAppSDK activation blocker is resolved (1.8 DDLM swap). Next
session opens with Phase 4 (view-model wiring) plus the SettingsDrawer
re-host triage.
This commit is contained in:
parent
07f4a1b716
commit
a33f80d345
2 changed files with 12 additions and 72 deletions
|
|
@ -33,29 +33,9 @@
|
||||||
<ColumnDefinition Width="64"/>
|
<ColumnDefinition Width="64"/>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
</Grid.ColumnDefinitions>
|
</Grid.ColumnDefinitions>
|
||||||
<Grid.Resources>
|
<!-- Drawer slide storyboards removed temporarily to isolate the
|
||||||
<!-- Drawer slide-in: 220ms ease-out-quart, translates 400px → 0 -->
|
XAML parse error blocking launch on WindowsAppSDK 1.8. -->
|
||||||
<Storyboard x:Key="DrawerSlideIn">
|
|
||||||
<DoubleAnimation Storyboard.TargetName="DrawerTransform"
|
|
||||||
Storyboard.TargetProperty="X"
|
|
||||||
To="0"
|
|
||||||
Duration="0:0:0.22">
|
|
||||||
<DoubleAnimation.EasingFunction>
|
|
||||||
<QuarticEase EasingMode="EaseOut"/>
|
|
||||||
</DoubleAnimation.EasingFunction>
|
|
||||||
</DoubleAnimation>
|
|
||||||
</Storyboard>
|
|
||||||
<Storyboard x:Key="DrawerSlideOut">
|
|
||||||
<DoubleAnimation Storyboard.TargetName="DrawerTransform"
|
|
||||||
Storyboard.TargetProperty="X"
|
|
||||||
To="400"
|
|
||||||
Duration="0:0:0.18">
|
|
||||||
<DoubleAnimation.EasingFunction>
|
|
||||||
<QuarticEase EasingMode="EaseIn"/>
|
|
||||||
</DoubleAnimation.EasingFunction>
|
|
||||||
</DoubleAnimation>
|
|
||||||
</Storyboard>
|
|
||||||
</Grid.Resources>
|
|
||||||
|
|
||||||
<!-- ═══════════════════════ LEFT RAIL ═══════════════════════ -->
|
<!-- ═══════════════════════ LEFT RAIL ═══════════════════════ -->
|
||||||
<Border Grid.Column="0"
|
<Border Grid.Column="0"
|
||||||
|
|
@ -397,17 +377,11 @@
|
||||||
</StackPanel>
|
</StackPanel>
|
||||||
</Border>
|
</Border>
|
||||||
|
|
||||||
<!-- ─── Settings drawer (slides over rows 1-3) ─── -->
|
<!-- Settings drawer host removed temporarily to isolate the
|
||||||
<views:SettingsDrawer x:Name="SettingsDrawerHost"
|
XAML parse error blocking launch on WindowsAppSDK 1.8.
|
||||||
Grid.Row="0"
|
The drawer XAML itself is unchanged and remains in
|
||||||
Grid.RowSpan="4"
|
Views/SettingsDrawer.xaml. Re-host once the parse error
|
||||||
HorizontalAlignment="Right"
|
is triaged. -->
|
||||||
Width="400"
|
|
||||||
IsHitTestVisible="False">
|
|
||||||
<views:SettingsDrawer.RenderTransform>
|
|
||||||
<TranslateTransform x:Name="DrawerTransform" X="400"/>
|
|
||||||
</views:SettingsDrawer.RenderTransform>
|
|
||||||
</views:SettingsDrawer>
|
|
||||||
|
|
||||||
<!-- ─── Status bar ─── -->
|
<!-- ─── Status bar ─── -->
|
||||||
<Grid Grid.Row="4"
|
<Grid Grid.Row="4"
|
||||||
|
|
|
||||||
|
|
@ -60,50 +60,16 @@ public sealed partial class MainWindow : Window
|
||||||
ThemeManager.Current.Toggle();
|
ThemeManager.Current.Toggle();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _drawerOpen;
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Toggle the settings drawer with a slide animation. The drawer is
|
/// Drawer toggle stubbed pending XAML-parse-error triage. The
|
||||||
/// pre-translated 400px off the right edge in XAML; the storyboard
|
/// SettingsDrawer XAML itself builds clean and is hosted inline once
|
||||||
/// animates X back to 0 to slide it in. Hit-testing is gated so the
|
/// the launch crash is resolved (see Phase 3 of the migration plan).
|
||||||
/// off-screen drawer doesn't intercept clicks on the participants list.
|
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void OnSettingsClick(object sender, RoutedEventArgs e)
|
private void OnSettingsClick(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
if (_drawerOpen)
|
// No-op stub until SettingsDrawerHost re-hosts in MainWindow.xaml.
|
||||||
{
|
|
||||||
CloseDrawer();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
OpenDrawer();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OpenDrawer()
|
|
||||||
{
|
|
||||||
if (_drawerOpen) return;
|
|
||||||
_drawerOpen = true;
|
|
||||||
SettingsDrawerHost.IsHitTestVisible = true;
|
|
||||||
var sb = (Microsoft.UI.Xaml.Media.Animation.Storyboard)((Microsoft.UI.Xaml.Controls.Grid)Content)
|
|
||||||
.Resources["DrawerSlideIn"];
|
|
||||||
sb.Begin();
|
|
||||||
SettingsDrawerHost.CloseRequested -= OnDrawerCloseRequested;
|
|
||||||
SettingsDrawerHost.CloseRequested += OnDrawerCloseRequested;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CloseDrawer()
|
|
||||||
{
|
|
||||||
if (!_drawerOpen) return;
|
|
||||||
_drawerOpen = false;
|
|
||||||
var sb = (Microsoft.UI.Xaml.Media.Animation.Storyboard)((Microsoft.UI.Xaml.Controls.Grid)Content)
|
|
||||||
.Resources["DrawerSlideOut"];
|
|
||||||
sb.Completed += (_, _) => SettingsDrawerHost.IsHitTestVisible = false;
|
|
||||||
sb.Begin();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void OnDrawerCloseRequested(object? sender, System.EventArgs e) => CloseDrawer();
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Push a resolved theme to the visual tree and to the AppWindow
|
/// Push a resolved theme to the visual tree and to the AppWindow
|
||||||
/// title-bar buttons. Called on every <see cref="ThemeManager.Themed"/>
|
/// title-bar buttons. Called on every <see cref="ThemeManager.Themed"/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue