No FrameHandler in WinUI for now... its too complex and broken

This commit is contained in:
Dan Clark
2024-11-18 22:20:25 +00:00
parent 0cc13bfe23
commit 748487031d
7 changed files with 44 additions and 14 deletions
@@ -181,6 +181,8 @@ public partial class ObservableCollection<TViewModel> :
Add(item); Add(item);
} }
SelectedItem = this.FirstOrDefault();
} }
public void Clear(bool disposeItems = false) public void Clear(bool disposeItems = false)
+13 -1
View File
@@ -10,6 +10,7 @@ using Windows.Win32.UI.WindowsAndMessaging;
using Toolkit.Windows; using Toolkit.Windows;
using Rect = Windows.Foundation.Rect; using Rect = Windows.Foundation.Rect;
using WinUIEx; using WinUIEx;
using Windows.Graphics;
namespace Toolkit.UI.WinUI; namespace Toolkit.UI.WinUI;
@@ -34,6 +35,17 @@ public static partial class WindowExtensions
} }
} }
public static void SetSize(this Window window,
int width,
int height)
{
nint handle = WindowNative.GetWindowHandle(window);
if (handle == 0) return;
float value = PInvoke.GetDpiForWindow(new HWND(handle)) / 96f;
window.AppWindow.Resize(new SizeInt32((int)(width * (double)value), (int)(height * (double)value)));
}
public static void MoveAndResize(this Window window, public static void MoveAndResize(this Window window,
Rect rect) Rect rect)
{ {
@@ -48,7 +60,7 @@ public static partial class WindowExtensions
} }
public static void SetBorderless(this Window window, public static void SetBorderless(this Window window,
bool value) bool value)
{ {
WindowStyle windowStyle = window.GetWindowStyle(); WindowStyle windowStyle = window.GetWindowStyle();
+6 -4
View File
@@ -29,15 +29,17 @@ public class ContentTemplate :
} }
protected override DataTemplate? SelectTemplateCore(object item, protected override DataTemplate? SelectTemplateCore(object item,
DependencyObject container) => SelectTemplateCore(item); DependencyObject container)
{
return SelectTemplateCore(item);
}
private static DataTemplate CreateDataTemplate(IContentTemplateDescriptor descriptor) private static DataTemplate CreateDataTemplate(IContentTemplateDescriptor descriptor)
{ {
string xamlString = @$" string xamlString = @$"
<DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"" <DataTemplate xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation""
xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns:ui=""using:{descriptor.TemplateType.Namespace}"">
xmlns:local=""using:Toolkit.WinUI""> <ui:{descriptor.TemplateType.Name} />
<local:TemplateControl />
</DataTemplate>"; </DataTemplate>";
return (DataTemplate)XamlReader.Load(xamlString); return (DataTemplate)XamlReader.Load(xamlString);
-9
View File
@@ -1,9 +0,0 @@
using Microsoft.UI.Xaml.Controls;
namespace Toolkit.WinUI;
public class PageControl :
Page
{
}
+5
View File
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8" ?>
<Page
x:Class="Toolkit.WinUI.TemplatePage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" />
+8
View File
@@ -0,0 +1,8 @@
using Microsoft.UI.Xaml.Controls;
namespace Toolkit.WinUI;
public sealed partial class TemplatePage : Page
{
public TemplatePage() => InitializeComponent();
}
+10
View File
@@ -15,6 +15,10 @@
<UseWinUI>true</UseWinUI> <UseWinUI>true</UseWinUI>
<WindowsSdkPackageVersion>10.0.19041.41</WindowsSdkPackageVersion> <WindowsSdkPackageVersion>10.0.19041.41</WindowsSdkPackageVersion>
</PropertyGroup> </PropertyGroup>
<ItemGroup>
<None Remove="TemplatePage.xaml" />
</ItemGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1742" /> <PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.26100.1742" />
@@ -24,5 +28,11 @@
<ItemGroup> <ItemGroup>
<ProjectReference Include="..\Toolkit.Windows\Toolkit.Windows.csproj" /> <ProjectReference Include="..\Toolkit.Windows\Toolkit.Windows.csproj" />
</ItemGroup> </ItemGroup>
<ItemGroup>
<Page Update="TemplatePage.xaml">
<Generator>MSBuild:Compile</Generator>
</Page>
</ItemGroup>
</Project> </Project>