Net4x.Xamarin.Forms.Wpf
5.0.778
dotnet add package Net4x.Xamarin.Forms.Wpf --version 5.0.778
NuGet\Install-Package Net4x.Xamarin.Forms.Wpf -Version 5.0.778
<PackageReference Include="Net4x.Xamarin.Forms.Wpf" Version="5.0.778" />
<PackageVersion Include="Net4x.Xamarin.Forms.Wpf" Version="5.0.778" />
<PackageReference Include="Net4x.Xamarin.Forms.Wpf" />
paket add Net4x.Xamarin.Forms.Wpf --version 5.0.778
#r "nuget: Net4x.Xamarin.Forms.Wpf, 5.0.778"
#:package Net4x.Xamarin.Forms.Wpf@5.0.778
#addin nuget:?package=Net4x.Xamarin.Forms.Wpf&version=5.0.778
#tool nuget:?package=Net4x.Xamarin.Forms.Wpf&version=5.0.778
Net4x.Xamarin.Forms.Wpf
The WPF API (System.Windows.*) implemented over Xamarin.Forms and rendered by Xamarin.Forms.Platform.GTK (GTK 4):
WPF code and WPF XAML compile and run unchanged on Linux, macOS and Windows.
dotnet add package Net4x.Xamarin.Forms.Wpf
dotnet add package Net4x.Xamarin.Forms.Build.Tasks # compiles the XAML (its targets are not transitive)
dotnet add package GtkSharp4 # fetches the GTK runtime on Windows (not transitive)
How it works
| WPF | Here |
|---|---|
DependencyObject |
a Xamarin.Forms Element; values in BindablePropertys, so XAML, bindings and {DynamicResource} are Xamarin.Forms' own |
DependencyProperty |
a view of a BindableProperty (XxxProperty fields are BindableProperty, implicitly DependencyProperty) |
UIElement |
owns a Xamarin.Forms View (created on first use), kept in step with its WPF properties |
| logical tree | the WPF one: routed events, inherited fonts/colors, IsEnabled, resources |
Window |
a GTK window of its own (FormsWindow.LoadPage); any number open; ShowDialog = nested loop |
Application |
brings GTK and Xamarin.Forms up; Run until Shutdown (ShutdownMode honoured) |
| input | GTK event controllers per window: Preview* tunnel, then bubble; handled events stop at the widget |
| focus | SetFocus raises PreviewLostKeyboardFocus before focus moves, so e.Handled = true keeps it, then LostKeyboardFocus/GotKeyboardFocus |
Dispatcher |
the GLib main context; DispatcherTimer = GLib timeout |
| XAML namespace | http://schemas.microsoft.com/winfx/2006/xaml/presentation maps to these namespaces (XmlnsDefinition) |
Boundaries
| Not modelled | Consequence |
|---|---|
| templates, visual tree | Template/DataTemplate kept, never applied; VisualTreeHelper walks the logical tree |
window position, Topmost, ShowInTaskbar |
GTK 4 leaves placement to the window manager |
| rich text | RichTextBox holds plain text; RTF loads as its text |
WindowsFormsHost |
absent |
A public type in a System.Windows.* namespace here is always a WPF type: nothing is added that WPF does not have,
so code that compiles against WPF resolves the same names.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- GtkSharp4 (>= 4.22.4.26273)
- Net4x.Xamarin.Forms.Core (>= 5.0.0.1)
- Net4x.Xamarin.Forms.Platform.GTK (>= 5.0.778)
- Net4x.Xamarin.Forms.Xaml (>= 5.0.0.1)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Net4x.Xamarin.Forms.Wpf:
| Package | Downloads |
|---|---|
|
Net4x.Vb6ToCSharp.XamarinGtk.UpgradeHelpers
WPF controls, helpers and common dialogs for VB6 programs converted to C# by Vb6ToCSharp, compiled against the Xamarin.Forms WPF facade so a converted WPF program runs on GTK 4. |
GitHub repositories
This package is not used by any popular GitHub repositories.