@@ -814,6 +814,7 @@ public virtual object? DataContext
814
814
{
815
815
Properties . RemoveValue ( s_dataContextProperty ) ;
816
816
OnDataContextChanged ( EventArgs . Empty ) ;
817
+
817
818
return ;
818
819
}
819
820
@@ -7332,6 +7333,18 @@ protected virtual void OnHandleCreated(EventArgs e)
7332
7333
SetWindowFont ( ) ;
7333
7334
}
7334
7335
7336
+ #pragma warning disable WFO5001 // Type is for evaluation purposes only and is subject to change or removal in future updates.
7337
+ if ( Application . IsDarkModeEnabled && GetStyle ( ControlStyles . ApplyThemingImplicitly ) )
7338
+ {
7339
+ HRESULT result = PInvoke . SetWindowTheme (
7340
+ hwnd : HWND ,
7341
+ pszSubAppName : $ "{ DarkModeIdentifier } _{ ExplorerThemeIdentifier } ",
7342
+ pszSubIdList : null ) ;
7343
+
7344
+ Debug . Assert ( result . Succeeded , "SetWindowTheme failed with HRESULT: " + result ) ;
7345
+ }
7346
+ #pragma warning restore WFO5001
7347
+
7335
7348
HandleHighDpi ( ) ;
7336
7349
7337
7350
// Restore drag drop status. Ole Initialize happens when the ThreadContext in Application is created.
@@ -10388,7 +10401,9 @@ protected virtual void SetVisibleCore(bool value)
10388
10401
PrepareDarkMode ( HWND , Application . IsDarkModeEnabled ) ;
10389
10402
}
10390
10403
10391
- PInvoke . ShowWindow ( HWND , value ? ShowParams : SHOW_WINDOW_CMD . SW_HIDE ) ;
10404
+ PInvoke . ShowWindow ( HWND , value
10405
+ ? ShowParams
10406
+ : SHOW_WINDOW_CMD . SW_HIDE ) ;
10392
10407
}
10393
10408
}
10394
10409
#pragma warning restore WFO5001
@@ -10400,6 +10415,7 @@ protected virtual void SetVisibleCore(bool value)
10400
10415
10401
10416
SetState ( States . Visible , value ) ;
10402
10417
fireChange = true ;
10418
+
10403
10419
try
10404
10420
{
10405
10421
if ( value )
@@ -10408,14 +10424,19 @@ protected virtual void SetVisibleCore(bool value)
10408
10424
}
10409
10425
10410
10426
PInvoke . SetWindowPos (
10411
- this ,
10412
- HWND . Null ,
10413
- 0 , 0 , 0 , 0 ,
10414
- SET_WINDOW_POS_FLAGS . SWP_NOSIZE
10427
+ hWnd : this ,
10428
+ hWndInsertAfter : HWND . Null ,
10429
+ X : 0 ,
10430
+ Y : 0 ,
10431
+ cx : 0 ,
10432
+ cy : 0 ,
10433
+ uFlags : SET_WINDOW_POS_FLAGS . SWP_NOSIZE
10415
10434
| SET_WINDOW_POS_FLAGS . SWP_NOMOVE
10416
10435
| SET_WINDOW_POS_FLAGS . SWP_NOZORDER
10417
10436
| SET_WINDOW_POS_FLAGS . SWP_NOACTIVATE
10418
- | ( value ? SET_WINDOW_POS_FLAGS . SWP_SHOWWINDOW : SET_WINDOW_POS_FLAGS . SWP_HIDEWINDOW ) ) ;
10437
+ | ( value
10438
+ ? SET_WINDOW_POS_FLAGS . SWP_SHOWWINDOW
10439
+ : SET_WINDOW_POS_FLAGS . SWP_HIDEWINDOW ) ) ;
10419
10440
}
10420
10441
catch
10421
10442
{
@@ -10469,27 +10490,30 @@ protected virtual void SetVisibleCore(bool value)
10469
10490
if ( IsHandleCreated )
10470
10491
{
10471
10492
PInvoke . SetWindowPos (
10472
- this ,
10473
- HWND . HWND_TOP ,
10474
- 0 , 0 , 0 , 0 ,
10475
- SET_WINDOW_POS_FLAGS . SWP_NOSIZE
10493
+ hWnd : this ,
10494
+ hWndInsertAfter : HWND . HWND_TOP ,
10495
+ X : 0 ,
10496
+ Y : 0 ,
10497
+ cx : 0 ,
10498
+ cy : 0 ,
10499
+ uFlags : SET_WINDOW_POS_FLAGS . SWP_NOSIZE
10476
10500
| SET_WINDOW_POS_FLAGS . SWP_NOMOVE
10477
10501
| SET_WINDOW_POS_FLAGS . SWP_NOZORDER
10478
10502
| SET_WINDOW_POS_FLAGS . SWP_NOACTIVATE
10479
10503
| ( value ? SET_WINDOW_POS_FLAGS . SWP_SHOWWINDOW : SET_WINDOW_POS_FLAGS . SWP_HIDEWINDOW ) ) ;
10480
10504
}
10481
10505
}
10506
+ }
10482
10507
10483
- static unsafe void PrepareDarkMode ( HWND hwnd , bool darkModeEnabled )
10484
- {
10485
- BOOL value = darkModeEnabled ;
10508
+ private static unsafe void PrepareDarkMode ( HWND hwnd , bool darkModeEnabled )
10509
+ {
10510
+ BOOL value = darkModeEnabled ;
10486
10511
10487
- PInvoke . DwmSetWindowAttribute (
10488
- hwnd ,
10489
- DWMWINDOWATTRIBUTE . DWMWA_USE_IMMERSIVE_DARK_MODE ,
10490
- & value ,
10491
- ( uint ) sizeof ( BOOL ) ) . AssertSuccess ( ) ;
10492
- }
10512
+ PInvoke . DwmSetWindowAttribute (
10513
+ hwnd ,
10514
+ DWMWINDOWATTRIBUTE . DWMWA_USE_IMMERSIVE_DARK_MODE ,
10515
+ & value ,
10516
+ ( uint ) sizeof ( BOOL ) ) . AssertSuccess ( ) ;
10493
10517
}
10494
10518
10495
10519
/// <summary>
0 commit comments