Skip to content

Commit

Permalink
fix layout helpers that take CommandBarElement children
Browse files Browse the repository at this point in the history
  • Loading branch information
VincentH-Net committed Jun 26, 2023
1 parent 2108c8c commit 1fd605d
Show file tree
Hide file tree
Showing 16 changed files with 279 additions and 280 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
<PackageReference Include="Uno.Core.Extensions.Logging.Singleton" Version="4.0.1" />
<PackageReference Include="Uno.WinUI" Version="4.9.20" />
<PackageReference Include="CSharpMarkup.WinUI" Version="2.1.14" />
<PackageReference Include="CSharpMarkup.WinUI" Version="2.2.21" />
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.2.0" />
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0" PrivateAssets="All" />
</ItemGroup>
Expand Down
2 changes: 1 addition & 1 deletion src/CSharpMarkup.WinUI/CSharpMarkup.WinUI.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<RepositoryType>git</RepositoryType>
<Product>$(AssemblyName) ($(TargetFramework))</Product>
<Version>2.2.12</Version>
<Version>2.2.21</Version>
<NeutralLanguage>en</NeutralLanguage>

<NoWarn>CS1591;CS1573;Uno0001</NoWarn>
Expand Down
12 changes: 3 additions & 9 deletions src/CSharpMarkup.WinUI/CommandBarElement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,14 @@

namespace CSharpMarkup.WinUI;

public class CommandBarElement : Xaml.Controls.ICommandBarElement
public class CommandBarElement : IAnyUI<Xaml.Controls.ICommandBarElement>
{
readonly Xaml.Controls.ICommandBarElement element;

#region ICommandBarElement implementation
public int DynamicOverflowOrder { get => element.DynamicOverflowOrder; set => element.DynamicOverflowOrder = value; }
public bool IsCompact { get => element.IsCompact; set => element.IsCompact = value; }
public bool IsInOverflow => element.IsInOverflow;
#endregion
public Xaml.Controls.ICommandBarElement UI { get; }

public static implicit operator CommandBarElement(AppBarButton e) => new (e.UI);
public static implicit operator CommandBarElement(AppBarElementContainer e) => new (e.UI);
public static implicit operator CommandBarElement(AppBarSeparator e) => new (e.UI);
public static implicit operator CommandBarElement(AppBarToggleButton e) => new (e.UI);

public CommandBarElement(Xaml.Controls.ICommandBarElement element) => this.element = element;
public CommandBarElement(Xaml.Controls.ICommandBarElement ui) => this.UI = ui;
}
8 changes: 6 additions & 2 deletions src/CSharpMarkup.WinUI/DependencyObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,15 @@ public static string BindingExpressionToPath(string pathExpression)
}
}

public interface IUI<TUI> where TUI : Xaml.DependencyObject
public interface IUI<TUI> : IAnyUI<TUI> where TUI : Xaml.DependencyObject { }

public interface IAnyUI<TUI> : IAnyUI // Support non-DependencyObject UI types, e.g. an interface
{
TUI UI { get; }
}

public interface IAnyUI { }

#if !WINUI
public partial class DependencyObject : IUI<Xaml.DependencyObject>
{
Expand All @@ -48,7 +52,7 @@ protected DependencyObject() { }
/// Allows to specify <see cref="CSharpMarkup.WinUI"/> types (e.g. <see cref="TextBlock"/>) as well as commonly used built-in C# / UI types (e.g. <see cref="string"/> or <see cref="Xaml.Thickness"/>).
/// </summary>
/// <remarks>For types not supported by implicit conversion, use the <see cref="UIObject(object)"/> contructor, e.g.: <code>new (FontCapitals.Normal)</code></remarks>
public class UIObject
public class UIObject : IAnyUI<object>
{
public object UI { get; }

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8320,9 +8320,9 @@ public static CommandBar CommandBar(params CommandBarElement[] PrimaryCommands)
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBar.StartChain(ui);
}
Expand Down Expand Up @@ -27950,9 +27950,9 @@ public static CommandBarFlyoutCommandBar CommandBarFlyoutCommandBar(params Comma
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBarFlyoutCommandBar.StartChain(ui);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8544,9 +8544,9 @@ public static CommandBar CommandBar(params CommandBarElement[] PrimaryCommands)
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBar.StartChain(ui);
}
Expand Down Expand Up @@ -29954,9 +29954,9 @@ public static CommandBarFlyoutCommandBar CommandBarFlyoutCommandBar(params Comma
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBarFlyoutCommandBar.StartChain(ui);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8673,9 +8673,9 @@ public static CommandBar CommandBar(params CommandBarElement[] PrimaryCommands)
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBar.StartChain(ui);
}
Expand Down Expand Up @@ -31827,9 +31827,9 @@ public static CommandBarFlyoutCommandBar CommandBarFlyoutCommandBar(params Comma
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBarFlyoutCommandBar.StartChain(ui);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8673,9 +8673,9 @@ public static CommandBar CommandBar(params CommandBarElement[] PrimaryCommands)
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBar.StartChain(ui);
}
Expand Down Expand Up @@ -31827,9 +31827,9 @@ public static CommandBarFlyoutCommandBar CommandBarFlyoutCommandBar(params Comma
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBarFlyoutCommandBar.StartChain(ui);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8673,9 +8673,9 @@ public static CommandBar CommandBar(params CommandBarElement[] PrimaryCommands)
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBar.StartChain(ui);
}
Expand Down Expand Up @@ -30618,9 +30618,9 @@ public static CommandBarFlyoutCommandBar CommandBarFlyoutCommandBar(params Comma
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBarFlyoutCommandBar.StartChain(ui);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7076,9 +7076,9 @@ public static CommandBar CommandBar(params CommandBarElement[] PrimaryCommands)
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBar.StartChain(ui);
}
Expand Down Expand Up @@ -7177,9 +7177,9 @@ public static CommandBarFlyout CommandBarFlyout(params CommandBarElement[] Prima
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBarFlyout.StartChain(ui);
}
Expand Down Expand Up @@ -20674,9 +20674,9 @@ public static TextCommandBarFlyout TextCommandBarFlyout(params CommandBarElement
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.TextCommandBarFlyout.StartChain(ui);
}
Expand Down Expand Up @@ -23393,9 +23393,9 @@ public static CommandBarFlyoutCommandBar CommandBarFlyoutCommandBar(params Comma
var subChildren = Spreader<CommandBarElement>.ExtractChildren(child);
if (subChildren is not null)
for (int j = 0; j < subChildren.Length; j++)
ui.PrimaryCommands.Add(subChildren[j]);
ui.PrimaryCommands.Add(subChildren[j].UI);
else
ui.PrimaryCommands.Add(child);
ui.PrimaryCommands.Add(child.UI);
}
return CSharpMarkup.WinUI.CommandBarFlyoutCommandBar.StartChain(ui);
}
Expand Down
2 changes: 1 addition & 1 deletion src/CSharpMarkup.WinUI/Readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,4 @@ Get started quickly with the [mcs-winui3-app and mcs-winui3-view dotnet new temp

[Example application](https://github.com/VincentH-Net/CSharpForMarkup/tree/master/src/CSharpMarkup.WinUI.Examples)

[Release Notes](https://github.com/VincentH-Net/CSharpForMarkup/releases/tag/csharpmarkup2-winui-wpf-2-2-12)
[Release Notes](https://github.com/VincentH-Net/CSharpForMarkup/releases/tag/csharpmarkup2-winui-wpf-2-2-21)
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
</PropertyGroup>

<ItemGroup>
<PackageReference Include="CSharpMarkup.WPF" Version="2.1.14" />
<PackageReference Include="CSharpMarkup.WPF" Version="2.2.21" />
<PackageReference Include="PropertyChanged.Fody" Version="4.1.0" PrivateAssets="All" />
</ItemGroup>

Expand Down
2 changes: 1 addition & 1 deletion src/CSharpMarkup.Wpf/CSharpMarkup.Wpf.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<RepositoryType>git</RepositoryType>
<Product>$(AssemblyName) ($(TargetFramework))</Product>
<Version>2.1.14</Version>
<Version>2.2.21</Version>
<NeutralLanguage>en</NeutralLanguage>

<NoWarn>CS1591;CS1573</NoWarn>
Expand Down
13 changes: 7 additions & 6 deletions src/CSharpMarkup.Wpf/DependencyObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -134,21 +134,22 @@ public static (string, string) NamesExpressionToNames(string? nameExpression)
}
}

public interface IUI<TUI> where TUI : System.Windows.DependencyObject
{
TUI UI { get; }
}
public interface IUI<TUI> : IAnyUI<TUI> where TUI : System.Windows.DependencyObject { }

public interface IUI_Dispatcher<TUI> where TUI : System.Windows.Threading.DispatcherObject
public interface IUI_Dispatcher<TUI> : IAnyUI<TUI> where TUI : System.Windows.Threading.DispatcherObject { }

public interface IAnyUI<TUI> : IAnyUI // Support non-DependencyObject/DispatcherObject UI types, e.g. an interface
{
TUI UI { get; }
}

public interface IAnyUI { }

/// <summary>
/// Allows to specify <see cref="CSharpMarkup.Wpf"/> types (e.g. <see cref="TextBlock"/>) as well as commonly used built-in C# / UI types (e.g. <see cref="string"/> or <see cref="System.Windows.Thickness"/>).
/// </summary>
/// <remarks>For types not supported by implicit conversion, use the <see cref="UIObject(object)"/> contructor, e.g.: <code>new (FontCapitals.Normal)</code></remarks>
public class UIObject
public class UIObject : IAnyUI<object>
{
public object UI { get; }

Expand Down
Loading

0 comments on commit 1fd605d

Please sign in to comment.