diff --git a/demo/Directory.Build.props b/demo/Directory.Build.props
index 409ca66..74d63f7 100644
--- a/demo/Directory.Build.props
+++ b/demo/Directory.Build.props
@@ -1,6 +1,6 @@
enable
- 11.1.999-cibuild0040425-beta
+ 11.0.7
diff --git a/demo/Semi.Avalonia.Demo.Drm/Program.cs b/demo/Semi.Avalonia.Demo.Drm/Program.cs
index 45d2f66..c690e85 100644
--- a/demo/Semi.Avalonia.Demo.Drm/Program.cs
+++ b/demo/Semi.Avalonia.Demo.Drm/Program.cs
@@ -1,59 +1,53 @@
-using Avalonia;
-using Avalonia.Dialogs;
-using Avalonia.Media;
-using System;
+using System;
+using System.Globalization;
using System.Linq;
using System.Threading;
+using Avalonia;
-namespace Semi.Avalonia.Demo.Drm
+namespace Semi.Avalonia.Demo.Drm;
+
+class Program
{
- internal class Program
+ // Initialization code. Don't use any Avalonia, third-party APIs or any
+ // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
+ // yet and stuff might break.
+ [STAThread]
+ public static int Main(string[] args)
{
- // Initialization code. Don't use any Avalonia, third-party APIs or any
- // SynchronizationContext-reliant code before AppMain is called: things aren't initialized
- // yet and stuff might break.
- [STAThread]
- public static void Main(string[] args)
+ var builder = BuildAvaloniaApp();
+
+ double GetScaling()
{
- var builder = BuildAvaloniaApp();
- builder.With(new FontManagerOptions
- {
- FontFallbacks = new[]
- {
- new FontFallback
- {
- FontFamily = new FontFamily("Microsoft YaHei")
- }
- }
- });
- if (args.Contains("--drm"))
- {
- SilenceConsole();
- builder.StartLinuxDrm(args: args, card: "/dev/dri/card0", scaling: 1);
- }
- else
- {
- builder.StartWithClassicDesktopLifetime(args);
- }
+ var idx = Array.IndexOf(args, "--scaling");
+ if (idx != 0 && args.Length > idx + 1 &&
+ double.TryParse(args[idx + 1], NumberStyles.Any, CultureInfo.InvariantCulture, out var scaling))
+ return scaling;
+ return 1;
}
- // Avalonia configuration, don't remove; also used by visual designer.
- public static AppBuilder BuildAvaloniaApp()
- => AppBuilder.Configure()
- .UseManagedSystemDialogs()
- .UsePlatformDetect()
- .With(new Win32PlatformOptions())
- .LogToTrace();
-
- private static void SilenceConsole()
+ if (args.Contains("--drm"))
{
- new Thread(() =>
+ SilenceConsole();
+ return builder.StartLinuxDrm(args: args, card: "/dev/dri/card1", scaling: GetScaling());
+ }
+
+ return builder.StartWithClassicDesktopLifetime(args);
+ }
+
+ // Avalonia configuration, don't remove; also used by visual designer.
+ public static AppBuilder BuildAvaloniaApp()
+ => AppBuilder.Configure()
+ .UsePlatformDetect()
+ .LogToTrace();
+
+ private static void SilenceConsole()
+ {
+ new Thread(() =>
{
Console.CursorVisible = false;
while (true)
Console.ReadKey(true);
})
{ IsBackground = true }.Start();
- }
}
}
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo.Drm/使用方法.md b/demo/Semi.Avalonia.Demo.Drm/使用方法.md
index efe659a..870b6a2 100644
--- a/demo/Semi.Avalonia.Demo.Drm/使用方法.md
+++ b/demo/Semi.Avalonia.Demo.Drm/使用方法.md
@@ -1,18 +1,23 @@
# DRM启动步骤
-(Ubuntu18.04Server版本 虚拟机测试OK)
+(Ubuntu18.04Server版本 虚拟机测试OK)
+(Orange Pi Zero2 Ubuntu20.04-arm64 测试OK)
Avalonia官方参考文档:https://docs.avaloniaui.net/docs/next/guides/platforms/rpi/running-on-raspbian-lite-via-drm
-1.Linux端运行命令
- sudo apt update
- sudo apt upgrade
- sudo reboot
- sudo apt - get install libgbm1 libgl1 - mesa - dri libegl1 - mesa libinput10
+1.Linux端运行命令
+```
+sudo apt update
+sudo apt upgrade
+sudo reboot
+sudo apt - get install libgbm1 libgl1 - mesa - dri libegl1 - mesa libinput10
+```
-2.安装测试工具测试(出现一个彩色立方体说明环境安装完成)
- sudo apt-get install kmscube
- sudo kmscube
+2.安装测试工具测试(出现一个彩色立方体说明环境安装完成)
+```
+sudo apt-get install kmscube
+sudo kmscube
+```
3.安装.net运行时(参考网址:https://learn.microsoft.com/zh-cn/dotnet/core/install/linux?WT.mc_id=dotnet-35129-website)
@@ -31,7 +36,7 @@ Avalonia官方参考文档:https://docs.avaloniaui.net/docs/next/guides/platfo
>Unhandled exception. Avalonia.Markup.Xaml.XamlLoadException: No precompiled XAML found for avares://Semi.Avalonia/Themes/Light/Light.axaml (baseUri: avares://Semi.Avalonia/Themes/Index.axaml), make sure to specify x:Class and include your XAML file as AvaloniaResource
解决方法:
- 如果使用Semi发布文件不要裁剪,如果裁剪会报错
+>如果使用Semi发布文件不要裁剪,如果裁剪会报错
2. 报错内容
@@ -41,11 +46,32 @@ Avalonia官方参考文档:https://docs.avaloniaui.net/docs/next/guides/platfo
at SkiaSharp.SKImageInfo..cctor()
解决方法:
- Linux命令行安装一下 apt-get install -y libfontconfig1
- 参考网址:https://github.com/mono/SkiaSharp/issues/509
+>Linux命令行安装一下 apt-get install -y libfontconfig1
+参考网址:https://github.com/mono/SkiaSharp/issues/509
3. 报错内容
>Permission denied
+解决方法:
+>sudo chmod +x ./Semi.Avalonia.Demo.Drm
+
+4. 报错内容
+>Unhandled exception. System.ComponentModel.Win32Exception (95): drmModeGetResources failed
+at Avalonia.LinuxFramebuffer.Output.DrmResources..ctor(Int32 fd, Boolean connectorsForceProbe) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs:line 91
+at Avalonia.LinuxFramebuffer.Output.DrmCard.GetResources(Boolean connectorsForceProbe) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs:line 171
+at Avalonia.LinuxFramebuffer.Output.DrmOutput..ctor(String path, Boolean connectorsForceProbe, DrmOutputOptions options) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs:line 60
+at LinuxFramebufferPlatformExtensions.StartLinuxDrm(AppBuilder builder, String[] args, String card, Double scaling, IInputBackend inputBackend) in /_/src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatform.cs:line 166
+at Semi.Avalonia.Demo.Drm.Program.Main(String[] args)
+
解决方法:
- sudo chmod +x ./Semi.Avalonia.Demo.Drm
\ No newline at end of file
+>`program.cs`的显卡路径错误,可能不是`dev/dri/card1`,看在`dev/dri`目录下有无其他的显卡如`card0`。
+
+5. 报错内容
+>Unhandled exception. System.ComponentModel.Win32Exception (2): Couldn't open /dev/dri/card1
+at Avalonia.LinuxFramebuffer.Output.DrmCard..ctor(String ) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmBindings.cs:line 167
+at Avalonia.LinuxFramebuffer.Output.DrmOutput..ctor(String , Boolean , DrmOutputOptions ) in /_/src/Linux/Avalonia.LinuxFramebuffer/Output/DrmOutput.cs:line 58
+at LinuxFramebufferPlatformExtensions.StartLinuxDrm(AppBuilder, String[], String , Double , IInputBackend ) in /_/src/Linux/Avalonia.LinuxFramebuffer/LinuxFramebufferPlatform.cs:line 166
+at Semi.Avalonia.Demo.Drm.Program.Main(String[])
+
+解决办法:
+>找不到显卡路径`dev/dri/card1`,可能是显卡挂载到别的文件夹下了,待解决。
\ No newline at end of file
diff --git a/demo/Semi.Avalonia.Demo/Assets/WORLD.png b/demo/Semi.Avalonia.Demo/Assets/WORLD.png
new file mode 100644
index 0000000..7c5b71f
Binary files /dev/null and b/demo/Semi.Avalonia.Demo/Assets/WORLD.png differ
diff --git a/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml
index ca8438f..44a1413 100644
--- a/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml
+++ b/demo/Semi.Avalonia.Demo/Pages/CalendarDatePickerDemo.axaml
@@ -9,6 +9,7 @@
mc:Ignorable="d">
+
diff --git a/demo/Semi.Avalonia.Demo/Pages/ComboBoxDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/ComboBoxDemo.axaml
index 6fccb90..488a8ff 100644
--- a/demo/Semi.Avalonia.Demo/Pages/ComboBoxDemo.axaml
+++ b/demo/Semi.Avalonia.Demo/Pages/ComboBoxDemo.axaml
@@ -15,6 +15,13 @@
Mr. 17
Cass
+
+ Ding
+ Otter
+ Husky
+ Mr. 17
+ Cass
+
Ding
Otter
diff --git a/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml
index 5a36e71..ba7f847 100644
--- a/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml
+++ b/demo/Semi.Avalonia.Demo/Pages/DataGridDemo.axaml
@@ -13,43 +13,48 @@
mc:Ignorable="d">
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
diff --git a/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml
index 2c0e9e9..3baefe4 100644
--- a/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml
+++ b/demo/Semi.Avalonia.Demo/Pages/DatePickerDemo.axaml
@@ -9,6 +9,7 @@
mc:Ignorable="d">
+
diff --git a/demo/Semi.Avalonia.Demo/Pages/HeaderedContentControlDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/HeaderedContentControlDemo.axaml
index 07f7cfe..af62a80 100644
--- a/demo/Semi.Avalonia.Demo/Pages/HeaderedContentControlDemo.axaml
+++ b/demo/Semi.Avalonia.Demo/Pages/HeaderedContentControlDemo.axaml
@@ -6,7 +6,32 @@
x:Class="Semi.Avalonia.Demo.Pages.HeaderedContentControlDemo">
-
+ Default Theme
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ GroupBox Theme
+
Semi Design 是由互娱社区前端团队与 UED 团队共同设计开发并维护的设计系统。设计系统包含设计语言以及一整套可复用的前端组件,帮助设计师与开发者更容易地打造高质量的、用户体验一致的、符合设计规范的 Web 应用。
diff --git a/demo/Semi.Avalonia.Demo/Pages/LabelDemo.axaml b/demo/Semi.Avalonia.Demo/Pages/LabelDemo.axaml
index 90f2676..5b17250 100644
--- a/demo/Semi.Avalonia.Demo/Pages/LabelDemo.axaml
+++ b/demo/Semi.Avalonia.Demo/Pages/LabelDemo.axaml
@@ -38,9 +38,9 @@
Secondary
Tertiary
Quaternary
- Warning
- Danger
- Success
+ Success
+ Warning
+ Danger
Mark
Code
@@ -65,20 +65,20 @@