mirror of
https://gitcode.com/gh_mirrors/se/Semi.Avalonia
synced 2026-04-16 14:16:35 +08:00
feat: add CopyText to PaletteDemo.
This commit is contained in:
@@ -1,3 +1,4 @@
|
|||||||
|
using System.Threading.Tasks;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Threading;
|
using Avalonia.Threading;
|
||||||
@@ -19,4 +20,14 @@ public partial class PaletteDemo : UserControl
|
|||||||
PaletteDemoViewModel? vm = this.DataContext as PaletteDemoViewModel;
|
PaletteDemoViewModel? vm = this.DataContext as PaletteDemoViewModel;
|
||||||
await Dispatcher.UIThread.InvokeAsync(() => { vm?.InitializeResources(); });
|
await Dispatcher.UIThread.InvokeAsync(() => { vm?.InitializeResources(); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task Copy(object? o)
|
||||||
|
{
|
||||||
|
if (o is null) return;
|
||||||
|
var toplevel = TopLevel.GetTopLevel(this);
|
||||||
|
if (toplevel?.Clipboard is { } c)
|
||||||
|
{
|
||||||
|
await c.SetTextAsync(o.ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls"
|
xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls"
|
||||||
xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels"
|
xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels"
|
||||||
|
xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages"
|
||||||
x:CompileBindings="True"
|
x:CompileBindings="True"
|
||||||
x:DataType="viewModels:FunctionalColorGroupViewModel">
|
x:DataType="viewModels:FunctionalColorGroupViewModel">
|
||||||
<ControlTheme x:Key="{x:Type controls:FunctionalColorGroupControl}" TargetType="controls:FunctionalColorGroupControl">
|
<ControlTheme x:Key="{x:Type controls:FunctionalColorGroupControl}" TargetType="controls:FunctionalColorGroupControl">
|
||||||
@@ -30,27 +31,21 @@
|
|||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
<DataGridTemplateColumn Width="*" Header="ResourceKey">
|
<DataGridTemplateColumn Width="300" Header="ResourceKey">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
||||||
<SelectableTextBlock
|
<SelectableTextBlock
|
||||||
Margin="12,0,12,0"
|
Margin="12,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{Binding ResourceKey}" />
|
Text="{Binding ResourceKey}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
<DataGridTextColumn
|
|
||||||
Width="*"
|
|
||||||
x:DataType="viewModels:ColorItemViewModel"
|
|
||||||
Binding="{Binding ColorDisplayName}"
|
|
||||||
CanUserSort="False"
|
|
||||||
Header="Description" />
|
|
||||||
<DataGridTemplateColumn Width="100" Header="Hex">
|
<DataGridTemplateColumn Width="100" Header="Hex">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
||||||
<SelectableTextBlock
|
<SelectableTextBlock
|
||||||
Margin="12,0,12,0"
|
Margin="12,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{Binding Hex}" />
|
Text="{Binding Hex}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
@@ -60,13 +55,29 @@
|
|||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
||||||
<SelectableTextBlock
|
<SelectableTextBlock
|
||||||
Margin="12,0,12,0"
|
Margin="12,0"
|
||||||
HorizontalAlignment="Right"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{Binding Brush.Opacity}" />
|
Text="{Binding Brush.Opacity}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
<DataGridTextColumn
|
||||||
|
Width="*"
|
||||||
|
x:DataType="viewModels:ColorItemViewModel"
|
||||||
|
Binding="{Binding ColorDisplayName}"
|
||||||
|
CanUserSort="False"
|
||||||
|
Header="Description" />
|
||||||
|
<DataGridTemplateColumn Width="100" Header="CopyText">
|
||||||
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
|
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
||||||
|
<Button
|
||||||
|
Command="{Binding $parent[pages:PaletteDemo].Copy}"
|
||||||
|
CommandParameter="{Binding CopyText}"
|
||||||
|
Theme="{DynamicResource IconBorderlessButton}"
|
||||||
|
Content="{StaticResource SemiIconCopy}" />
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
</DataGridTemplateColumn>
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
@@ -84,27 +95,21 @@
|
|||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
<DataGridTemplateColumn Width="*" Header="ResourceKey">
|
<DataGridTemplateColumn Width="300" Header="ResourceKey">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
||||||
<SelectableTextBlock
|
<SelectableTextBlock
|
||||||
Margin="12,0,12,0"
|
Margin="12,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{Binding ResourceKey}" />
|
Text="{Binding ResourceKey}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
<DataGridTextColumn
|
|
||||||
Width="*"
|
|
||||||
x:DataType="viewModels:ColorItemViewModel"
|
|
||||||
Binding="{Binding ColorDisplayName}"
|
|
||||||
CanUserSort="False"
|
|
||||||
Header="Description" />
|
|
||||||
<DataGridTemplateColumn Width="100" Header="Hex">
|
<DataGridTemplateColumn Width="100" Header="Hex">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
||||||
<SelectableTextBlock
|
<SelectableTextBlock
|
||||||
Margin="12,0,12,0"
|
Margin="12,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{Binding Hex}" />
|
Text="{Binding Hex}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
@@ -114,13 +119,29 @@
|
|||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
||||||
<SelectableTextBlock
|
<SelectableTextBlock
|
||||||
Margin="12,0,12,0"
|
Margin="12,0"
|
||||||
HorizontalAlignment="Right"
|
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{Binding Brush.Opacity}" />
|
Text="{Binding Brush.Opacity}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
<DataGridTextColumn
|
||||||
|
Width="*"
|
||||||
|
x:DataType="viewModels:ColorItemViewModel"
|
||||||
|
Binding="{Binding ColorDisplayName}"
|
||||||
|
CanUserSort="False"
|
||||||
|
Header="Description" />
|
||||||
|
<DataGridTemplateColumn Width="100" Header="CopyText">
|
||||||
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
|
<DataTemplate DataType="viewModels:ColorItemViewModel">
|
||||||
|
<Button
|
||||||
|
Command="{Binding $parent[pages:PaletteDemo].Copy}"
|
||||||
|
CommandParameter="{Binding CopyText}"
|
||||||
|
Theme="{DynamicResource IconBorderlessButton}"
|
||||||
|
Content="{StaticResource SemiIconCopy}" />
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
</DataGridTemplateColumn>
|
||||||
</DataGrid.Columns>
|
</DataGrid.Columns>
|
||||||
</DataGrid>
|
</DataGrid>
|
||||||
</TabItem>
|
</TabItem>
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls"
|
xmlns:controls="clr-namespace:Semi.Avalonia.Demo.Controls"
|
||||||
xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels"
|
xmlns:viewModels="clr-namespace:Semi.Avalonia.Demo.ViewModels"
|
||||||
|
xmlns:pages="clr-namespace:Semi.Avalonia.Demo.Pages"
|
||||||
x:CompileBindings="True"
|
x:CompileBindings="True"
|
||||||
x:DataType="viewModels:ShadowGroupViewModel">
|
x:DataType="viewModels:ShadowGroupViewModel">
|
||||||
<ControlTheme x:Key="{x:Type controls:ShadowGroupControl}" TargetType="controls:ShadowGroupControl">
|
<ControlTheme x:Key="{x:Type controls:ShadowGroupControl}" TargetType="controls:ShadowGroupControl">
|
||||||
@@ -19,29 +20,40 @@
|
|||||||
<TabItem Header="Light">
|
<TabItem Header="Light">
|
||||||
<DataGrid IsReadOnly="True" ItemsSource="{TemplateBinding LightShadows}">
|
<DataGrid IsReadOnly="True" ItemsSource="{TemplateBinding LightShadows}">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTemplateColumn Width="*" Header="ResourceKey">
|
<DataGridTemplateColumn Width="300" Header="ResourceKey">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
||||||
<SelectableTextBlock
|
<SelectableTextBlock
|
||||||
Margin="12,0,12,0"
|
Margin="12,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{Binding ResourceKey}" />
|
Text="{Binding ResourceKey}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
<DataGridTemplateColumn Width="300" Header="BoxShadows">
|
||||||
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
|
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
||||||
|
<SelectableTextBlock
|
||||||
|
Margin="12,0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{Binding BoxShadowValue}" />
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
</DataGridTemplateColumn>
|
||||||
<DataGridTextColumn
|
<DataGridTextColumn
|
||||||
Width="*"
|
Width="*"
|
||||||
x:DataType="viewModels:ShadowItemViewModel"
|
x:DataType="viewModels:ShadowItemViewModel"
|
||||||
Binding="{Binding ShadowDisplayName}"
|
Binding="{Binding ShadowDisplayName}"
|
||||||
CanUserSort="False"
|
CanUserSort="False"
|
||||||
Header="Description" />
|
Header="Description" />
|
||||||
<DataGridTemplateColumn Width="300" Header="BoxShadows">
|
<DataGridTemplateColumn Width="100" Header="CopyText">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
||||||
<SelectableTextBlock
|
<Button
|
||||||
Margin="12,0,12,0"
|
Command="{Binding $parent[pages:PaletteDemo].Copy}"
|
||||||
VerticalAlignment="Center"
|
CommandParameter="{Binding CopyText}"
|
||||||
Text="{Binding BoxShadowValue}" />
|
Theme="{DynamicResource IconBorderlessButton}"
|
||||||
|
Content="{StaticResource SemiIconCopy}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
@@ -51,29 +63,40 @@
|
|||||||
<TabItem Header="Dark">
|
<TabItem Header="Dark">
|
||||||
<DataGrid IsReadOnly="True" ItemsSource="{TemplateBinding DarkShadows}">
|
<DataGrid IsReadOnly="True" ItemsSource="{TemplateBinding DarkShadows}">
|
||||||
<DataGrid.Columns>
|
<DataGrid.Columns>
|
||||||
<DataGridTemplateColumn Width="*" Header="ResourceKey">
|
<DataGridTemplateColumn Width="300" Header="ResourceKey">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
||||||
<SelectableTextBlock
|
<SelectableTextBlock
|
||||||
Margin="12,0,12,0"
|
Margin="12,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
Text="{Binding ResourceKey}" />
|
Text="{Binding ResourceKey}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
<DataGridTemplateColumn Width="300" Header="BoxShadows">
|
||||||
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
|
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
||||||
|
<SelectableTextBlock
|
||||||
|
Margin="12,0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{Binding BoxShadowValue}" />
|
||||||
|
</DataTemplate>
|
||||||
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
|
</DataGridTemplateColumn>
|
||||||
<DataGridTextColumn
|
<DataGridTextColumn
|
||||||
Width="*"
|
Width="*"
|
||||||
x:DataType="viewModels:ShadowItemViewModel"
|
x:DataType="viewModels:ShadowItemViewModel"
|
||||||
Binding="{Binding ShadowDisplayName}"
|
Binding="{Binding ShadowDisplayName}"
|
||||||
CanUserSort="False"
|
CanUserSort="False"
|
||||||
Header="Description" />
|
Header="Description" />
|
||||||
<DataGridTemplateColumn Width="300" Header="BoxShadows">
|
<DataGridTemplateColumn Width="100" Header="CopyText">
|
||||||
<DataGridTemplateColumn.CellTemplate>
|
<DataGridTemplateColumn.CellTemplate>
|
||||||
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
<DataTemplate DataType="viewModels:ShadowItemViewModel">
|
||||||
<SelectableTextBlock
|
<Button
|
||||||
Margin="12,0,12,0"
|
Command="{Binding $parent[pages:PaletteDemo].Copy}"
|
||||||
VerticalAlignment="Center"
|
CommandParameter="{Binding CopyText}"
|
||||||
Text="{Binding BoxShadowValue}" />
|
Theme="{DynamicResource IconBorderlessButton}"
|
||||||
|
Content="{StaticResource SemiIconCopy}" />
|
||||||
</DataTemplate>
|
</DataTemplate>
|
||||||
</DataGridTemplateColumn.CellTemplate>
|
</DataGridTemplateColumn.CellTemplate>
|
||||||
</DataGridTemplateColumn>
|
</DataGridTemplateColumn>
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ using Avalonia.Media;
|
|||||||
using CommunityToolkit.Mvvm.ComponentModel;
|
using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
using CommunityToolkit.Mvvm.Messaging;
|
using CommunityToolkit.Mvvm.Messaging;
|
||||||
using Semi.Avalonia.Demo.Constant;
|
using Semi.Avalonia.Demo.Constant;
|
||||||
using Semi.Avalonia.Tokens.Palette;
|
|
||||||
using Semi.Avalonia.Demo.Converters;
|
using Semi.Avalonia.Demo.Converters;
|
||||||
|
using Semi.Avalonia.Tokens.Palette;
|
||||||
|
|
||||||
namespace Semi.Avalonia.Demo.ViewModels;
|
namespace Semi.Avalonia.Demo.ViewModels;
|
||||||
|
|
||||||
@@ -135,6 +135,11 @@ public partial class ColorItemViewModel : ObservableObject
|
|||||||
[ObservableProperty] private string? _colorResourceKey;
|
[ObservableProperty] private string? _colorResourceKey;
|
||||||
[ObservableProperty] private string? _hex;
|
[ObservableProperty] private string? _hex;
|
||||||
|
|
||||||
|
public string CopyText =>
|
||||||
|
$"""
|
||||||
|
<StaticResource x:Key="" ResourceKey="{ResourceKey}" />
|
||||||
|
""";
|
||||||
|
|
||||||
public ColorItemViewModel(string colorDisplayName, ISolidColorBrush brush, string resourceKey, bool light,
|
public ColorItemViewModel(string colorDisplayName, ISolidColorBrush brush, string resourceKey, bool light,
|
||||||
int index)
|
int index)
|
||||||
{
|
{
|
||||||
@@ -191,6 +196,11 @@ public partial class ShadowItemViewModel : ObservableObject
|
|||||||
[ObservableProperty] private string? _resourceKey;
|
[ObservableProperty] private string? _resourceKey;
|
||||||
[ObservableProperty] private string? _boxShadowValue;
|
[ObservableProperty] private string? _boxShadowValue;
|
||||||
|
|
||||||
|
public string CopyText =>
|
||||||
|
$"""
|
||||||
|
<StaticResource x:Key="" ResourceKey="{ResourceKey}" />
|
||||||
|
""";
|
||||||
|
|
||||||
public ShadowItemViewModel(string shadowDisplayName, BoxShadows boxShadows, string resourceKey)
|
public ShadowItemViewModel(string shadowDisplayName, BoxShadows boxShadows, string resourceKey)
|
||||||
{
|
{
|
||||||
ShadowDisplayName = shadowDisplayName;
|
ShadowDisplayName = shadowDisplayName;
|
||||||
|
|||||||
Reference in New Issue
Block a user