feat: 1. Update dependency.

2. Provide sample for Dialog StyleClass option.
This commit is contained in:
rabbitism
2024-11-03 22:26:14 +08:00
parent ee707cd977
commit 9d394753d7
10 changed files with 175 additions and 166 deletions

View File

@@ -3,9 +3,18 @@
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:semi="https://irihi.tech/semi" xmlns:semi="https://irihi.tech/semi"
xmlns:u-semi="https://irihi.tech/ursa/themes/semi"> xmlns:u-semi="https://irihi.tech/ursa/themes/semi"
xmlns:u="https://irihi.tech/ursa"
xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared">
<Application.Styles> <Application.Styles>
<semi:SemiTheme Locale="zh-CN" /> <semi:SemiTheme Locale="zh-CN" />
<u-semi:SemiTheme Locale="zh-CN" /> <u-semi:SemiTheme Locale="zh-CN" />
<!--This style is created to demonstrate Dialog StyleClass feature. This style is applied to Dialog Window-->
<Style Selector="u|DefaultDialogWindow.Custom">
<Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="Content" Value="CUSTOM"/>
<Setter Property="helpers:ClassHelper.Classes" Value="Warning"></Setter>
</Style>
</Style>
</Application.Styles> </Application.Styles>
</Application> </Application>

View File

@@ -51,6 +51,21 @@
IsThreeState="True" /> IsThreeState="True" />
<CheckBox u:FormItem.Label="CanDragMove" IsChecked="{Binding CanDragMove}" /> <CheckBox u:FormItem.Label="CanDragMove" IsChecked="{Binding CanDragMove}" />
<CheckBox u:FormItem.Label="CanResize" IsChecked="{Binding CanResize}" /> <CheckBox u:FormItem.Label="CanResize" IsChecked="{Binding CanResize}" />
<u:FormItem>
<u:FormItem.Label>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Style Class" />
<PathIcon
Width="12"
Height="12"
VerticalAlignment="Center"
TextElement.FontWeight="Normal"
Data="{DynamicResource DialogQuestionIconGlyph}"
ToolTip.Tip="Pass a Style Class to the created Dialog. In this example, if you set StyleClass as 'Custom', You will get Special Style for OK Button. These styles usually are defined in the root of your App/Window" />
</StackPanel>
</u:FormItem.Label>
<TextBox HorizontalAlignment="Stretch" Text="{Binding StyleClass}" />
</u:FormItem>
<Button <Button
HorizontalAlignment="Left" HorizontalAlignment="Left"
u:FormItem.NoLabel="True" u:FormItem.NoLabel="True"
@@ -128,6 +143,21 @@
IsChecked="{Binding IsLocal}" IsChecked="{Binding IsLocal}"
OffContent="Global" OffContent="Global"
OnContent="Local" /> OnContent="Local" />
<u:FormItem>
<u:FormItem.Label>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Style Class" />
<PathIcon
Width="12"
Height="12"
VerticalAlignment="Center"
TextElement.FontWeight="Normal"
Data="{DynamicResource DialogQuestionIconGlyph}"
ToolTip.Tip="Pass a Style Class to the created Dialog. In this example, if you set StyleClass as 'Custom', You will get Special Style for OK Button. These styles usually are defined in the root of your App/Window" />
</StackPanel>
</u:FormItem.Label>
<TextBox HorizontalAlignment="Stretch" Text="{Binding StyleClass}" />
</u:FormItem>
<Button <Button
HorizontalAlignment="Left" HorizontalAlignment="Left"
u:FormItem.NoLabel="True" u:FormItem.NoLabel="True"

View File

@@ -33,6 +33,7 @@ public partial class DefaultWindowDialogDemoViewModel: ObservableObject
[ObservableProperty] private bool? _isCloseButtonVisible; [ObservableProperty] private bool? _isCloseButtonVisible;
[ObservableProperty] private bool _canDragMove; [ObservableProperty] private bool _canDragMove;
[ObservableProperty] private bool _canResize; [ObservableProperty] private bool _canResize;
[ObservableProperty] private string? _styleClass;
public ICommand ShowDialogCommand { get; } public ICommand ShowDialogCommand { get; }
@@ -57,6 +58,7 @@ public partial class DefaultWindowDialogDemoViewModel: ObservableObject
StartupLocation = Location, StartupLocation = Location,
CanDragMove = CanDragMove, CanDragMove = CanDragMove,
CanResize = CanResize, CanResize = CanResize,
StyleClass = StyleClass,
}; };
if (X.HasValue && Y.HasValue) if (X.HasValue && Y.HasValue)
{ {
@@ -133,6 +135,7 @@ public partial class DefaultOverlayDialogDemoViewModel : ObservableObject
[ObservableProperty] private bool _isModal; [ObservableProperty] private bool _isModal;
[ObservableProperty] private bool _isLocal; [ObservableProperty] private bool _isLocal;
[ObservableProperty] private bool _canResize; [ObservableProperty] private bool _canResize;
[ObservableProperty] private string? _styleClass;
public ICommand ShowDialogCommand { get; } public ICommand ShowDialogCommand { get; }
@@ -163,7 +166,7 @@ public partial class DefaultOverlayDialogDemoViewModel : ObservableObject
CanDragMove = CanDragMove, CanDragMove = CanDragMove,
IsCloseButtonVisible = IsCloseButtonVisible, IsCloseButtonVisible = IsCloseButtonVisible,
CanResize = CanResize, CanResize = CanResize,
StyleClass = "Alert", StyleClass = StyleClass,
}; };
string? dialogHostId = IsLocal ? DialogDemoViewModel.LocalHost : null; string? dialogHostId = IsLocal ? DialogDemoViewModel.LocalHost : null;
if (IsModal) if (IsModal)

View File

@@ -3,21 +3,31 @@
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:views="clr-namespace:Ursa.Demo.Views"
xmlns:u="https://irihi.tech/ursa" xmlns:u="https://irihi.tech/ursa"
xmlns:viewModels="clr-namespace:Ursa.Demo.ViewModels" xmlns:viewModels="clr-namespace:Ursa.Demo.ViewModels"
xmlns:views="clr-namespace:Ursa.Demo.Views"
Title="Ursa.Demo" Title="Ursa.Demo"
d:DesignHeight="450" d:DesignHeight="450"
d:DesignWidth="800" d:DesignWidth="800"
x:CompileBindings="True" x:CompileBindings="True"
IsFullScreenButtonVisible="{OnPlatform True, macOS=False}"
IsManagedResizerVisible="{OnPlatform False, Linux=True}"
x:DataType="viewModels:MainWindowViewModel" x:DataType="viewModels:MainWindowViewModel"
Icon="/Assets/Ursa.ico" Icon="/Assets/Ursa.ico"
IsFullScreenButtonVisible="{OnPlatform True, macOS=False}"
IsManagedResizerVisible="{OnPlatform False, Linux=True}"
mc:Ignorable="d"> mc:Ignorable="d">
<u:UrsaWindow.RightContent> <u:UrsaWindow.RightContent>
<views:TitleBarRightContent /> <views:TitleBarRightContent />
</u:UrsaWindow.RightContent> </u:UrsaWindow.RightContent>
<u:UrsaWindow.Styles>
<!--This style is created to demonstrate Dialog StyleClass feature. This style is applied to dialogs in MainWindow OverlayDialogHost -->
<Style Selector="u|DefaultDialogControl.Custom">
<Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="Content" Value="CUSTOM" />
<Setter Property="helpers:ClassHelper.Classes" Value="Warning" />
</Style>
</Style>
</u:UrsaWindow.Styles>
<views:MainView /> <views:MainView />
</u:UrsaWindow> </u:UrsaWindow>

View File

@@ -1,69 +0,0 @@
using System.Collections.Specialized;
using Avalonia;
using Avalonia.Collections;
namespace Ursa.Themes.Semi;
internal class ClassHelper : AvaloniaObject
{
public static readonly AttachedProperty<string> ClassesProperty =
AvaloniaProperty.RegisterAttached<ClassHelper, StyledElement, string>("Classes");
public static readonly AttachedProperty<StyledElement> ClassSourceProperty =
AvaloniaProperty.RegisterAttached<ClassHelper, StyledElement, StyledElement>("ClassSource");
static ClassHelper()
{
ClassesProperty.Changed.AddClassHandler<StyledElement>(OnClassesChanged);
ClassSourceProperty.Changed.AddClassHandler<StyledElement>(OnClassSourceChanged);
}
private static void OnClassSourceChanged(StyledElement arg1, AvaloniaPropertyChangedEventArgs arg2)
{
if (arg2.NewValue is StyledElement styledElement)
{
arg1.Classes.Clear();
var nonPseudoClasses = styledElement.Classes.Where(c => !c.StartsWith(":"));
arg1.Classes.AddRange(nonPseudoClasses);
styledElement.Classes.WeakSubscribe((o, e) => OnSourceClassesChanged(o, e, arg1));
}
}
private static void OnSourceClassesChanged(object sender, NotifyCollectionChangedEventArgs e, StyledElement target)
{
if (sender is AvaloniaList<string> classes)
{
target.Classes.Clear();
var nonPseudoClasses = classes.Where(c => !c.StartsWith(":"));
target.Classes.AddRange(nonPseudoClasses);
}
}
public static void SetClasses(AvaloniaObject obj, string value)
{
obj.SetValue(ClassesProperty, value);
}
public static string GetClasses(AvaloniaObject obj)
{
return obj.GetValue(ClassesProperty);
}
private static void OnClassesChanged(StyledElement sender, AvaloniaPropertyChangedEventArgs value)
{
var classes = value.GetNewValue<string?>();
if (classes is null) return;
sender.Classes.Clear();
sender.Classes.Add(classes);
}
public static void SetClassSource(StyledElement obj, StyledElement value)
{
obj.SetValue(ClassSourceProperty, value);
}
public static StyledElement GetClassSource(StyledElement obj)
{
return obj.GetValue(ClassSourceProperty);
}
}

View File

@@ -2,7 +2,7 @@
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:u="https://irihi.tech/ursa" xmlns:u="https://irihi.tech/ursa"
xmlns:usemi="https://irihi.tech/ursa/themes/semi"> xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared">
<!-- Add Resources Here --> <!-- Add Resources Here -->
<ControlTheme x:Key="{x:Type u:AutoCompleteBox}" TargetType="u:AutoCompleteBox"> <ControlTheme x:Key="{x:Type u:AutoCompleteBox}" TargetType="u:AutoCompleteBox">
<Setter Property="VerticalAlignment" Value="Center" /> <Setter Property="VerticalAlignment" Value="Center" />
@@ -15,7 +15,7 @@
Name="PART_TextBox" Name="PART_TextBox"
MinHeight="{TemplateBinding MinHeight}" MinHeight="{TemplateBinding MinHeight}"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
usemi:ClassHelper.ClassSource="{TemplateBinding}" helpers:ClassHelper.ClassSource="{TemplateBinding}"
DataValidationErrors.Errors="{TemplateBinding (DataValidationErrors.Errors)}" DataValidationErrors.Errors="{TemplateBinding (DataValidationErrors.Errors)}"
InnerLeftContent="{TemplateBinding InnerLeftContent}" InnerLeftContent="{TemplateBinding InnerLeftContent}"
InnerRightContent="{TemplateBinding InnerRightContent}" InnerRightContent="{TemplateBinding InnerRightContent}"

View File

@@ -1,8 +1,8 @@
<ResourceDictionary <ResourceDictionary
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:theme="clr-namespace:Ursa.Themes.Semi" xmlns:u="https://irihi.tech/ursa"
xmlns:u="https://irihi.tech/ursa"> xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared">
<ControlTheme x:Key="{x:Type u:OverlayDialogHost}" TargetType="u:OverlayDialogHost"> <ControlTheme x:Key="{x:Type u:OverlayDialogHost}" TargetType="u:OverlayDialogHost">
<Setter Property="OverlayMaskBrush" Value="{DynamicResource OverlayDialogMaskBrush}" /> <Setter Property="OverlayMaskBrush" Value="{DynamicResource OverlayDialogMaskBrush}" />
@@ -207,35 +207,24 @@
DockPanel.Dock="Right" DockPanel.Dock="Right"
Theme="{DynamicResource OverlayCloseButton}" /> Theme="{DynamicResource OverlayCloseButton}" />
</Grid> </Grid>
<StackPanel <Grid
Grid.Row="2" Grid.Row="2"
Margin="24,0,24,24" Margin="24,0,24,24"
HorizontalAlignment="Right" HorizontalAlignment="Right"
Orientation="Horizontal"> ColumnDefinitions="Auto, Auto, Auto, Auto">
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_CancelButton}" Name="{x:Static u:DefaultDialogControl.PART_CancelButton}"
Margin="8,0,0,0" Margin="8,0,0,0" />
Classes="Tertiary"
Content="{DynamicResource STRING_MENU_DIALOG_CANCEL}" />
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_NoButton}" Name="{x:Static u:DefaultDialogControl.PART_NoButton}"
Margin="8,0,0,0" Margin="8,0,0,0"/>
Classes="Danger"
Content="{DynamicResource STRING_MENU_DIALOG_NO}"
Theme="{DynamicResource SolidButton}" />
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_YesButton}" Name="{x:Static u:DefaultDialogControl.PART_YesButton}"
Margin="8,0,0,0" Margin="8,0,0,0"/>
Classes="Primary"
Content="{DynamicResource STRING_MENU_DIALOG_YES}"
Theme="{DynamicResource SolidButton}" />
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_OKButton}" Name="{x:Static u:DefaultDialogControl.PART_OKButton}"
Margin="8,0,0,0" Margin="8,0,0,0"/>
Classes="Primary" </Grid>
Content="{DynamicResource STRING_MENU_DIALOG_OK}"
Theme="{DynamicResource SolidButton}" />
</StackPanel>
</Grid> </Grid>
</Border> </Border>
@@ -254,6 +243,29 @@
<Setter Property="Margin" Value="0" /> <Setter Property="Margin" Value="0" />
<Setter Property="Background" Value="{DynamicResource BorderCardBackground}" /> <Setter Property="Background" Value="{DynamicResource BorderCardBackground}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="Grid.Column" Value="0"/>
<Setter Property="helpers:ClassHelper.Classes" Value="Tertiary"/>
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_CANCEL}"/>
</Style>
<Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="Grid.Column" Value="1"></Setter>
<Setter Property="helpers:ClassHelper.Classes" Value="Danger"/>
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_NO}"/>
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/>
</Style>
<Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="Grid.Column" Value="2"></Setter>
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/>
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_YES}"/>
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/>
</Style>
<Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="Grid.Column" Value="3"></Setter>
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/>
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_OK}"/>
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/>
</Style>
<Style Selector="^[Mode=None]"> <Style Selector="^[Mode=None]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="False" /> <Setter Property="IsVisible" Value="False" />
@@ -262,16 +274,16 @@
<Setter Property="Margin" Value="24 24 0 0" /> <Setter Property="Margin" Value="24 24 0 0" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Info]"> <Style Selector="^[Mode=Info]">
@@ -281,16 +293,16 @@
<Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Warning]"> <Style Selector="^[Mode=Warning]">
@@ -300,19 +312,19 @@
<Setter Property="Foreground" Value="{DynamicResource SemiOrange6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiOrange6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Warning" /> <Setter Property="helpers:ClassHelper.Classes" Value="Warning" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}" /> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Warning" /> <Setter Property="helpers:ClassHelper.Classes" Value="Warning" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}" /> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}" /> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Error]"> <Style Selector="^[Mode=Error]">
@@ -322,16 +334,16 @@
<Setter Property="Foreground" Value="{DynamicResource SemiRed6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiRed6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Question]"> <Style Selector="^[Mode=Question]">
@@ -341,16 +353,16 @@
<Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Success]"> <Style Selector="^[Mode=Success]">
@@ -360,16 +372,16 @@
<Setter Property="Foreground" Value="{DynamicResource SemiGreen6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiGreen6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Success" /> <Setter Property="helpers:ClassHelper.Classes" Value="Success" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Success" /> <Setter Property="helpers:ClassHelper.Classes" Value="Success" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^ /template/ Panel#PART_TitleArea"> <Style Selector="^ /template/ Panel#PART_TitleArea">
@@ -604,27 +616,16 @@
Orientation="Horizontal"> Orientation="Horizontal">
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_CancelButton}" Name="{x:Static u:DefaultDialogControl.PART_CancelButton}"
Margin="8,0,0,0" Margin="8,0,0,0" />
Classes="Tertiary"
Content="{DynamicResource STRING_MENU_DIALOG_CANCEL}" />
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_NoButton}" Name="{x:Static u:DefaultDialogControl.PART_NoButton}"
Margin="8,0,0,0" Margin="8,0,0,0" />
Classes="Danger"
Content="{DynamicResource STRING_MENU_DIALOG_NO}"
Theme="{DynamicResource SolidButton}" />
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_YesButton}" Name="{x:Static u:DefaultDialogControl.PART_YesButton}"
Margin="8,0,0,0" Margin="8,0,0,0" />
Classes="Primary"
Content="{DynamicResource STRING_MENU_DIALOG_YES}"
Theme="{DynamicResource SolidButton}" />
<Button <Button
Name="{x:Static u:DefaultDialogControl.PART_OKButton}" Name="{x:Static u:DefaultDialogControl.PART_OKButton}"
Margin="8,0,0,0" Margin="8,0,0,0" />
Classes="Primary"
Content="{DynamicResource STRING_MENU_DIALOG_OK}"
Theme="{DynamicResource SolidButton}" />
</StackPanel> </StackPanel>
</Grid> </Grid>
@@ -633,6 +634,29 @@
</Panel> </Panel>
</ControlTemplate> </ControlTemplate>
</Setter> </Setter>
<Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="Grid.Column" Value="0"/>
<Setter Property="helpers:ClassHelper.Classes" Value="Tertiary"/>
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_CANCEL}"/>
</Style>
<Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="Grid.Column" Value="1"></Setter>
<Setter Property="helpers:ClassHelper.Classes" Value="Danger"/>
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_NO}"/>
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/>
</Style>
<Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="Grid.Column" Value="2"></Setter>
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/>
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_YES}"/>
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/>
</Style>
<Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="Grid.Column" Value="3"></Setter>
<Setter Property="helpers:ClassHelper.Classes" Value="Primary"/>
<Setter Property="Content" Value="{DynamicResource STRING_MENU_DIALOG_OK}"/>
<Setter Property="Theme" Value="{DynamicResource SolidButton}"/>
</Style>
<Style Selector="^[Mode=None]"> <Style Selector="^[Mode=None]">
<Style Selector="^ /template/ PathIcon#PART_Icon"> <Style Selector="^ /template/ PathIcon#PART_Icon">
<Setter Property="IsVisible" Value="False" /> <Setter Property="IsVisible" Value="False" />
@@ -641,16 +665,16 @@
<Setter Property="Margin" Value="24 24 0 0" /> <Setter Property="Margin" Value="24 24 0 0" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Info]"> <Style Selector="^[Mode=Info]">
@@ -660,16 +684,16 @@
<Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Warning]"> <Style Selector="^[Mode=Warning]">
@@ -679,19 +703,19 @@
<Setter Property="Foreground" Value="{DynamicResource SemiOrange6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiOrange6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Warning" /> <Setter Property="helpers:ClassHelper.Classes" Value="Warning" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}" /> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Warning" /> <Setter Property="helpers:ClassHelper.Classes" Value="Warning" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}" /> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
<Setter Property="Theme" Value="{DynamicResource SolidButton}" /> <Setter Property="Theme" Value="{DynamicResource SolidButton}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Error]"> <Style Selector="^[Mode=Error]">
@@ -701,16 +725,16 @@
<Setter Property="Foreground" Value="{DynamicResource SemiRed6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiRed6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Question]"> <Style Selector="^[Mode=Question]">
@@ -720,16 +744,16 @@
<Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiBlue6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Primary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Primary" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
<Style Selector="^[Mode=Success]"> <Style Selector="^[Mode=Success]">
@@ -739,16 +763,16 @@
<Setter Property="Foreground" Value="{DynamicResource SemiGreen6}" /> <Setter Property="Foreground" Value="{DynamicResource SemiGreen6}" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_OKButton"> <Style Selector="^ /template/ Button#PART_OKButton">
<Setter Property="theme:ClassHelper.Classes" Value="Success" /> <Setter Property="helpers:ClassHelper.Classes" Value="Success" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_YesButton"> <Style Selector="^ /template/ Button#PART_YesButton">
<Setter Property="theme:ClassHelper.Classes" Value="Success" /> <Setter Property="helpers:ClassHelper.Classes" Value="Success" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_NoButton"> <Style Selector="^ /template/ Button#PART_NoButton">
<Setter Property="theme:ClassHelper.Classes" Value="Danger" /> <Setter Property="helpers:ClassHelper.Classes" Value="Danger" />
</Style> </Style>
<Style Selector="^ /template/ Button#PART_CancelButton"> <Style Selector="^ /template/ Button#PART_CancelButton">
<Setter Property="theme:ClassHelper.Classes" Value="Tertiary" /> <Setter Property="helpers:ClassHelper.Classes" Value="Tertiary" />
</Style> </Style>
</Style> </Style>
</ControlTheme> </ControlTheme>

View File

@@ -2,7 +2,7 @@
xmlns="https://github.com/avaloniaui" xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:u="https://irihi.tech/ursa" xmlns:u="https://irihi.tech/ursa"
xmlns:u-semi="https://irihi.tech/ursa/themes/semi"> xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared">
<!-- Add Resources Here --> <!-- Add Resources Here -->
<ControlTheme x:Key="{x:Type u:EnumSelector}" TargetType="u:EnumSelector"> <ControlTheme x:Key="{x:Type u:EnumSelector}" TargetType="u:EnumSelector">
<Setter Property="HorizontalAlignment" Value="Left" /> <Setter Property="HorizontalAlignment" Value="Left" />
@@ -10,7 +10,7 @@
<ControlTemplate TargetType="u:EnumSelector"> <ControlTemplate TargetType="u:EnumSelector">
<ComboBox <ComboBox
Width="{TemplateBinding Width}" Width="{TemplateBinding Width}"
u-semi:ClassHelper.ClassSource="{TemplateBinding}" helpers:ClassHelper.ClassSource="{TemplateBinding}"
HorizontalAlignment="{TemplateBinding HorizontalAlignment}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
VerticalAlignment="{TemplateBinding VerticalAlignment}" VerticalAlignment="{TemplateBinding VerticalAlignment}"
Name="PART_ComboBox" Name="PART_ComboBox"

View File

@@ -1,7 +1,8 @@
<Styles xmlns="https://github.com/avaloniaui" <Styles xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:u="https://irihi.tech/ursa" xmlns:u="https://irihi.tech/ursa"
xmlns:theme="https://irihi.tech/ursa/themes/semi"> xmlns:theme="https://irihi.tech/ursa/themes/semi"
xmlns:helpers="clr-namespace:Irihi.Avalonia.Shared.Helpers;assembly=Irihi.Avalonia.Shared">
<Design.PreviewWith> <Design.PreviewWith>
<Border Padding="20"> <Border Padding="20">
<!-- Add Controls for Previewer Here --> <!-- Add Controls for Previewer Here -->
@@ -16,7 +17,7 @@
</Style> </Style>
<Style Selector="u|PinCode.Small"> <Style Selector="u|PinCode.Small">
<Style Selector="^ u|PinCodeItem"> <Style Selector="^ u|PinCodeItem">
<Setter Property="theme:ClassHelper.Classes" Value="Small"></Setter> <Setter Property="helpers:ClassHelper.Classes" Value="Small"></Setter>
<Style Selector="^:nth-last-child(n+2)"> <Style Selector="^:nth-last-child(n+2)">
<Setter Property="Margin" Value="0 0 6 0"></Setter> <Setter Property="Margin" Value="0 0 6 0"></Setter>
</Style> </Style>
@@ -24,7 +25,7 @@
</Style> </Style>
<Style Selector="u|PinCode.Large"> <Style Selector="u|PinCode.Large">
<Style Selector="^ u|PinCodeItem"> <Style Selector="^ u|PinCodeItem">
<Setter Property="theme:ClassHelper.Classes" Value="Large"></Setter> <Setter Property="helpers:ClassHelper.Classes" Value="Large"></Setter>
<Style Selector="^:nth-last-child(n+2)"> <Style Selector="^:nth-last-child(n+2)">
<Setter Property="Margin" Value="0 0 12 0"></Setter> <Setter Property="Margin" Value="0 0 12 0"></Setter>
</Style> </Style>

View File

@@ -15,7 +15,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="Avalonia" Version="$(AvaloniaVersion)"/> <PackageReference Include="Avalonia" Version="$(AvaloniaVersion)"/>
<PackageReference Include="Irihi.Avalonia.Shared" Version="0.1.9" /> <PackageReference Include="Irihi.Avalonia.Shared" Version="0.2.0" />
<PackageReference Include="Irihi.Avalonia.Shared.Contracts" Version="0.2.0" />
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>