diff --git a/CommunityToolkit.App.Shared/Renderers/GeneratedSampleOptionsRenderer.xaml.cs b/CommunityToolkit.App.Shared/Renderers/GeneratedSampleOptionsRenderer.xaml.cs index cfaa4fc7..1b00271d 100644 --- a/CommunityToolkit.App.Shared/Renderers/GeneratedSampleOptionsRenderer.xaml.cs +++ b/CommunityToolkit.App.Shared/Renderers/GeneratedSampleOptionsRenderer.xaml.cs @@ -30,14 +30,14 @@ public GeneratedSampleOptionsRenderer() /// The backing for . /// public static readonly DependencyProperty SampleOptionsProperty = - DependencyProperty.Register(nameof(SampleOptions), typeof(IEnumerable), typeof(GeneratedSampleOptionsRenderer), new PropertyMetadata(null)); + DependencyProperty.Register(nameof(SampleOptions), typeof(IGeneratedToolkitSampleOptionViewModel[]), typeof(GeneratedSampleOptionsRenderer), new PropertyMetadata(new List())); /// /// The generated sample options that should be displayed to the user. /// - public IEnumerable? SampleOptions + public IGeneratedToolkitSampleOptionViewModel[] SampleOptions { - get => (IEnumerable?)GetValue(SampleOptionsProperty); + get => (IGeneratedToolkitSampleOptionViewModel[])GetValue(SampleOptionsProperty); set => SetValue(SampleOptionsProperty, value); } diff --git a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs index 4417837e..6af5bc68 100644 --- a/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs +++ b/CommunityToolkit.App.Shared/Renderers/ToolkitSampleRenderer.xaml.cs @@ -193,10 +193,13 @@ private async Task LoadData() // Generated properties reference these in getters and setters. propertyContainer.GeneratedPropertyMetadata = Metadata.GeneratedSampleOptions; - SampleOptionsPaneInstance = new GeneratedSampleOptionsRenderer + if (propertyContainer.GeneratedPropertyMetadata is not null) { - SampleOptions = propertyContainer.GeneratedPropertyMetadata - }; + SampleOptionsPaneInstance = new GeneratedSampleOptionsRenderer + { + SampleOptions = propertyContainer.GeneratedPropertyMetadata + }; + } } else { diff --git a/CommunityToolkit.Tooling.SampleGen/Metadata/IToolkitSampleGeneratedOptionPropertyContainer.cs b/CommunityToolkit.Tooling.SampleGen/Metadata/IToolkitSampleGeneratedOptionPropertyContainer.cs index 35bfd81b..56fa997d 100644 --- a/CommunityToolkit.Tooling.SampleGen/Metadata/IToolkitSampleGeneratedOptionPropertyContainer.cs +++ b/CommunityToolkit.Tooling.SampleGen/Metadata/IToolkitSampleGeneratedOptionPropertyContainer.cs @@ -16,5 +16,5 @@ public interface IToolkitSampleGeneratedOptionPropertyContainer /// as a proxy between the current actual value and the /// generated properties which consume them. /// - public IEnumerable? GeneratedPropertyMetadata { get; set; } + public IGeneratedToolkitSampleOptionViewModel[]? GeneratedPropertyMetadata { get; set; } } diff --git a/CommunityToolkit.Tooling.SampleGen/Metadata/ToolkitSampleMetadata.cs b/CommunityToolkit.Tooling.SampleGen/Metadata/ToolkitSampleMetadata.cs index 2c0eb17c..417b7f28 100644 --- a/CommunityToolkit.Tooling.SampleGen/Metadata/ToolkitSampleMetadata.cs +++ b/CommunityToolkit.Tooling.SampleGen/Metadata/ToolkitSampleMetadata.cs @@ -50,7 +50,7 @@ public sealed class ToolkitSampleMetadata /// /// Gets or sets the generated sample options that were declared alongside this sample, if any. /// - public IEnumerable? GeneratedSampleOptions { get; set; } + public IGeneratedToolkitSampleOptionViewModel[]? GeneratedSampleOptions { get; set; } /// /// Contains the metadata needed to identify and display a toolkit sample. @@ -74,7 +74,7 @@ public ToolkitSampleMetadata( Func sampleControlFactory, Type? sampleOptionsPaneType = null, Func? sampleOptionsPaneFactory = null, - IEnumerable? generatedSampleOptions = null) + IGeneratedToolkitSampleOptionViewModel[]? generatedSampleOptions = null) { Id = id; DisplayName = displayName; diff --git a/CommunityToolkit.Tooling.SampleGen/ToolkitSampleOptionGenerator.cs b/CommunityToolkit.Tooling.SampleGen/ToolkitSampleOptionGenerator.cs index a29bc23e..b1a512fb 100644 --- a/CommunityToolkit.Tooling.SampleGen/ToolkitSampleOptionGenerator.cs +++ b/CommunityToolkit.Tooling.SampleGen/ToolkitSampleOptionGenerator.cs @@ -126,9 +126,9 @@ namespace {attachedSymbol.ContainingNamespace} {{ public partial class {attachedSymbol.Name} : {typeof(IToolkitSampleGeneratedOptionPropertyContainer).Namespace}.{nameof(IToolkitSampleGeneratedOptionPropertyContainer)} {{ - private IEnumerable<{typeof(IGeneratedToolkitSampleOptionViewModel).FullName}>? _generatedPropertyMetadata; + private {typeof(IGeneratedToolkitSampleOptionViewModel).FullName}[]? _generatedPropertyMetadata; - public IEnumerable<{typeof(IGeneratedToolkitSampleOptionViewModel).FullName}>? GeneratedPropertyMetadata + public {typeof(IGeneratedToolkitSampleOptionViewModel).FullName}[]? GeneratedPropertyMetadata {{ get => _generatedPropertyMetadata; set