This commit is contained in:
2025-11-30 09:34:46 +01:00
parent 18c77aacbe
commit c2dcc88e22
4 changed files with 49 additions and 27 deletions

View File

@@ -3,13 +3,13 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450" mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Pilz.UI.AvaloniaUI.Dialogs.HeaderMenuItem" x:Class="Pilz.UI.AvaloniaUI.Controls.HeaderMenuItem"
x:Name="RootItem"> x:Name="RootItem">
<MenuItem.Header> <MenuItem.Header>
<StackPanel Orientation="Horizontal" Spacing="3"> <StackPanel Orientation="Horizontal" Spacing="3">
<ContentControl Content="{Binding #RootItem.Icon}"/> <ContentControl x:Name="ContentControlHeaderIcon" IsVisible="False"/>
<TextBlock x:Name="TextBlockHeader"/> <TextBlock x:Name="TextBlockHeaderText"/>
</StackPanel> </StackPanel>
</MenuItem.Header> </MenuItem.Header>
</MenuItem> </MenuItem>

View File

@@ -0,0 +1,42 @@
using Avalonia;
using Avalonia.Controls;
namespace Pilz.UI.AvaloniaUI.Controls;
public partial class HeaderMenuItem : MenuItem
{
public static readonly StyledProperty<string?> HeaderTextProperty = AvaloniaProperty.Register<HeaderMenuItem, string?>(nameof(HeaderText));
public static readonly StyledProperty<object?> HeaderIconProperty = AvaloniaProperty.Register<HeaderMenuItem, object?>(nameof(HeaderIcon));
public string? HeaderText
{
get => GetValue(HeaderTextProperty);
set
{
SetValue(HeaderTextProperty, value);
TextBlockHeaderText.Text = value;
}
}
public object? HeaderIcon
{
get => GetValue(HeaderIconProperty);
set
{
SetValue(HeaderIconProperty, value);
ContentControlHeaderIcon.Content = value;
ContentControlHeaderIcon.IsVisible = value != null;
}
}
public new object? Icon
{
get => HeaderIcon;
set => HeaderIcon = value;
}
public HeaderMenuItem()
{
InitializeComponent();
}
}

View File

@@ -1,24 +0,0 @@
using Avalonia;
using Avalonia.Controls;
namespace Pilz.UI.AvaloniaUI.Dialogs;
public partial class HeaderMenuItem : MenuItem
{
public static readonly StyledProperty<string?> HeaderTextProperty = AvaloniaProperty.Register<HeaderMenuItem, string?>(nameof(HeaderText));
public string? HeaderText
{
get => GetValue(HeaderTextProperty);
set
{
SetValue(HeaderTextProperty, value);
TextBlockHeader.Text = value;
}
}
public HeaderMenuItem()
{
InitializeComponent();
}
}

View File

@@ -32,6 +32,10 @@
<DependentUpon>ImageDropDownButton.axaml</DependentUpon> <DependentUpon>ImageDropDownButton.axaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Update="Controls\HeaderMenuItem.axaml.cs">
<DependentUpon>HeaderMenuItem.axaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
</ItemGroup> </ItemGroup>
</Project> </Project>