Open
Description
Describe the bug
There are issues related to the CsWinRT/AOT auto-generated code to proper find the auto-generated code done by CommunityToolKit for [ObservableProperty]
, which leads to runtime errors since there are missing interfaces.
To Reproduce
Example:
Given a type called FolderMenuItem
which has observable property:
[WinRT.BindableCustomProperty]
public partial class FolderMenuItem : ObservableObject
{
[ObservableProperty]
private string name = string.Empty;
public string FolderFriendName { get; set; }
}
Actual result in the WinRTCustomBindableProperties.g.cs is missing the Name
property:
partial class FolderMenuItem : global::Microsoft.UI.Xaml.Data.IBindableCustomPropertyImplementation
{
global::Microsoft.UI.Xaml.Data.BindableCustomProperty global::Microsoft.UI.Xaml.Data.IBindableCustomPropertyImplementation.GetProperty(string name)
{
if (name == "FolderFriendlyName")
{
return new global::Microsoft.UI.Xaml.Data.BindableCustomProperty(
true,
false,
"FolderFriendlyName",
typeof(string),
static (instance) => ((PhotosManager.Models.FolderMenuItem)instance).FolderFriendlyName,
null,
null,
null);
}
}
}
Expected behavior
The CsWinRT auto-gen code should see any CTK auto-gen code and proper create the AOT mapping.
As a workaround for now I need to remove [WinRT.BindableCustomProperty]
and create the interface myself:
partial class FolderMenuItem : global::Microsoft.UI.Xaml.Data.IBindableCustomPropertyImplementation
{
global::Microsoft.UI.Xaml.Data.BindableCustomProperty global::Microsoft.UI.Xaml.Data.IBindableCustomPropertyImplementation.GetProperty(string name)
{
if (name == "Name")
{
return new global::Microsoft.UI.Xaml.Data.BindableCustomProperty(
true,
false,
"Name",
typeof(string),
static (instance) => ((PhotosManager.Models.FolderMenuItem)instance).Name,
null,
null,
null);
}
if (name == "FolderFriendlyName")
{
return new global::Microsoft.UI.Xaml.Data.BindableCustomProperty(
true,
false,
"FolderFriendlyName",
typeof(string),
static (instance) => ((PhotosManager.Models.FolderMenuItem)instance).FolderFriendlyName,
null,
null,
null);
}
return default;
}
global::Microsoft.UI.Xaml.Data.BindableCustomProperty global::Microsoft.UI.Xaml.Data.IBindableCustomPropertyImplementation.GetProperty(global::System.Type indexParameterType)
{
return default;
}
}
Version Info
- WindowsAppSdk: 1.6.240531000-experimental1
- CsWinRT: 2.1.0-prerelease-ci.240729.2
- Windows SDK: 10.0.22621.35-preview
- CommunityToolkit.MVVM: 8.2.2
- CommunityToolkit WinUI: 8.0.230907
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment