Releases: VincentH-Net/CSharpForMarkup
csharpmarkup2-winui-2-0-0
Major Release
C# Markup 2 target platforms are now updated and expanded:
- .NET 7 and C# 11 for all target platforms
- Supports latest version of Windows App SDK for targeting Windows - no dependency on Uno Platform
- Supports latest version of Uno.WinUI for targeting Android, iOS, Mac Catalyst, WebAssembly, Skia/Tizen, Skia/WPF, and Skia/GTK for Linux
- Supports platform specific API's and API variations (separate C# Markup API's generated for each target platform, compiled into separate assemblies)
- Built for multi-targeting
- Adds Source Link for easy debugging and discovery of API's and API patterns
- Comes with high-quality mcs-winui3-app and mcs-winui3-view dotnet new templates
- All code built to the highest C# standards: nullable enabled, zero warnings, fully compliant with the mcs-editorconfig template
- Supports rebuild UI on C# Hot Reload - including smart workarounds for various MS hot reload defects
- Has built-in debug navigator overlay to quickly build out your pages in hot reload
- Has
New-View.ps1
to quickly add views from within Visual Studio's terminal. Create views with or without viewmodel. - Uses a combination of CommunityToolkit.Mvvm and PropertyChanged.Fody for an optimal developer experience with viewmodels
- Automatic file nesting of
<view>.cs
and<view>.logic.cs
in solution explorer - Application main window content is now also a C# Markup view (in
App.cs
andApp.logic.cs
)
- new
.Content()
extension method onPage
allows to configure existing page instances (created by navigating to a page) fully in C# Markup instead of in the.logic.cs
file
csharpmarkup2-winui-wpf-0-8-3
What's Changed
- WinUI 3 Desktop: remove unused Uno.WinUI dependency
- Update WinUI 3 and Uno Platform NuGets to latest stable - fixes #35
Full Changelog: csharpmarkup2-winui-wpf-0-8-2...csharpmarkup2-winui-wpf-0-8-3
csharpmarkup2-winui-wpf-0-8-2
What's Changed
ControlTemplates
helpers: maketargetType
first parameter instead of last- Cleaned up
ControlTemplate
example onFlutterPage
in example solutions - WinUI 3 Desktop: fix add
ControlTemplates
helpers; now supported in all platforms - WPF: fix remove nonsense
targetType
parameter fromItemsPanelTemplate
helpers
Full Changelog: csharpmarkup2-winui-wpf-0-8-1...csharpmarkup2-winui-wpf-0-8-2
csharpmarkup2-winui-wpf-0-8-1
What's Changed
- Improvements for
Style
:- No need to use
new
in value setters - New
Bind
extension methods for binding a dependency property in a Style
- No need to use
- Add
ItemsPanelTemplate
helpers - Add
ControlTemplate
,ContentPresenter
andVisualStateManager
helpers (WPF, Uno Platform) - Add
BindTemplate
helper to bind to the templated parent from within aControlTemplate
(WPF, Uno Platform) - Add
ControlTemplate
usage in example sln (WPF, Uno Platform) - Hot Reload in example now works for editing styles (WPF)
Known limitations:
- The WinUI 3 Desktop platform does not offer
ControlTemplate
related helpers yet, pending a fix for this WinUI 3 issue.
This is because WinUI 3 Desktop does not expose API's to create aControlTemplate
from code - which can be worked around via a bit of XAML and a custom attached property, however it also does not exposeTemplatedParent
in any API and it does not setTemplatedParent
for items added in code to a XAML-created ControlTemplate either, which meansControlTemplates
created in code cannot have functioning bindings toTemplatedParent
and no functioningContentPresenter
. With these limitations ControlTemplates are of little value.
Full Changelog: csharpmarkup2-winui-wpf-0-6-14...csharpmarkup2-winui-wpf-0-8-1
csharpmarkup2-winui-wpf-0-6-14
What's Changed
WinUI 3 and Uno Platform
- Changed namespace
Microsoft.UI.Markup
toCSharpMarkup.WinUI
WPF
- Add
CSharpMarkup.WPF
NuGet andCSharpMarkup.WPF.Examples
application
Improvements for all UI frameworks (WPF, WinUI 3 and Uno Platform):
- Add many layout factory helpers generated via
[ContentProperty]
attribute - Add
UIObject
(and for WPF alsoUIDependencyObject
) to allow specifying both markup and non-markup content objects without appending.UI
- Add content parameter to the generated helper that has parameters for a view's self-defined writable properties
- Add support for inheriting specified markup factory helper parameters in derived types, used for
TimeLine
- Add performant generic
Spread()
andSpreadS()
(allocation-free) - Add
.Resources()
convenience helper - Add default bind properties for
Brush
derived types - Add implicit
to.<Type>
convertor from markup types to support e.g..BorderBrush(Red)
- Add generated
to.<Type>
type convertors from[TypeConvertor]
attribute for WPF and UnoWinUI (WinUI does not use that attribute - need to select and add convertors manually) - Add support to use manual type convertors in codegen
- Add 4 manual type convertors
- Support passing in
string
andUIElement
forInline
- Replace
O<>
with nullable value types to support automatic value conversion for builder helper method parameters, e.g. to compileBorder(CornerRadius: 2.5)
. As a consequence remove redundant generated factory methods - Update and cleanup example applications
- WPF example: automatic update on .NET Hot Reload
- Fixes
Full Changelog: csharpmarkup2-winui-0-5-1...csharpmarkup2-winui-wpf-0-6-14
CSharpMarkup.WinUI 0.5.1 Pre-release
Changes in this release:
- Updated to Uno 4
This is an early preview, intended mainly to gauge interest and to get feedback on the shape and features of the markup API. NJoy playing around with this and chime in with issues if you like / want things or if you have questions.
Twitter feedback is also welcome - use #CSharpForMarkup and @vincenth_net, thanks!
Only Windows Desktop and webassembly targets have been tested at this time, and there has been no webassembly performance optimization so far. Expect frequent updates in the coming weeks!
Targets Microsoft.WindowsAppSDK 1.0.0 / Uno.WinUI 4.0.9
CSharpMarkup.WinUI 0.5.0
Initial release, announced at UNOCONF 2021
This is an early preview, intended mainly to gauge interest and to get feedback on the shape and features of the markup API. NJoy playing around with this and chime in with issues if you like / want things or if you have questions.
Twitter feedback is also welcome - use #CSharpForMarkup and @vincenth_net, thanks!
Only Windows Desktop and webassembly targets have been tested at this time, and there has been no webassembly performance optimization so far. Expect frequent updates in the coming weeks!
Targets Microsoft.WindowsAppSDK 1.0.0 / Uno.WinUI 3.11.6
csharpformarkup-1-archive
With CSharpForMarkup 2
around the corner, the source, docs, history and news for CSharpForMarkup 1
is now archived in this release.
CSharpForMarkup 1
targets Microsoft .NET Xamarin and Maui with a limited set of fluent helpers.
Additional implementations of CSharpForMarkup 1 can be found here: