{"id":31944227,"url":"https://github.com/syminomega/syminui","last_synced_at":"2026-03-15T22:36:33.460Z","repository":{"id":37489628,"uuid":"490314313","full_name":"syminomega/SyminUI","owner":"syminomega","description":"WPF UI kit. Build interface with Neomorphism style and C# UI which use MVU design.","archived":false,"fork":false,"pushed_at":"2025-04-14T17:25:49.000Z","size":8241,"stargazers_count":31,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-24T09:47:13.365Z","etag":null,"topics":["wpf","wpf-controls","wpf-styles","wpf-ui"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/syminomega.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-05-09T14:18:36.000Z","updated_at":"2025-07-01T13:17:30.000Z","dependencies_parsed_at":"2025-01-15T02:53:54.296Z","dependency_job_id":"3fd0398d-67c2-4f5b-9afe-f8fd3ee30ea1","html_url":"https://github.com/syminomega/SyminUI","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/syminomega/SyminUI","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syminomega%2FSyminUI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syminomega%2FSyminUI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syminomega%2FSyminUI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syminomega%2FSyminUI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/syminomega","download_url":"https://codeload.github.com/syminomega/SyminUI/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/syminomega%2FSyminUI/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279018780,"owners_count":26086451,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-14T02:00:06.444Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["wpf","wpf-controls","wpf-styles","wpf-ui"],"created_at":"2025-10-14T10:22:22.817Z","updated_at":"2025-10-14T10:22:23.904Z","avatar_url":"https://github.com/syminomega.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SyminUI\n![SyminUI Icon](./Images/SyminUI.png)\nSyminUI is a WPF UI kit. Build interface with Neomorphism style and **C#UI** in MVU pattern (WIP).\\\nSyminUI 是 WPF 的 UI 组件库，并使用称为 **C#UI** 的 MVU 设计模式进行 UI 搭建（画饼中），默认样式为新拟态风格。\n\n[![build](https://github.com/syminomega/SyminUI/actions/workflows/dotnet-desktop.yml/badge.svg)](https://github.com/syminomega/SyminUI/actions/workflows/dotnet-desktop.yml)\n\n## Preview 总览\n![Styles Demo](./Images/StylesDemo.jpg)\n\n## ⭐ Next Step\n1. Separate the theme and MVU architecture into different packages.\\\n将主题文件和MVU架构拆分到不同的项目中。\n2. Add dark theme.\\\n添加深色主题支持。\n\n## 🧰 Quick Start 快速使用\n1. Add `SyminData` and `SyminUI` reference to your project.\\\n在项目中添加 `SyminData` 和 `SyminUI` 引用.\n2. Add these code to `App.xaml`.\\\n将以下代码添加至 `App.xaml` 中。\n\n``` xml\n    \u003cApplication.Resources\u003e\n        \u003cResourceDictionary\u003e\n            \u003cResourceDictionary.MergedDictionaries\u003e\n                \u003cResourceDictionary Source=\"pack://application:,,,/SyminUI;component/Themes/SyminLight.xaml\"/\u003e\n                \u003cResourceDictionary Source=\"pack://application:,,,/SyminUI;component/Themes/SyminBasic.xaml\"/\u003e\n                \u003cResourceDictionary Source=\"pack://application:,,,/SyminUI;component/Themes/SyminStyle.xaml\"/\u003e\n                \u003cResourceDictionary Source=\"pack://application:,,,/SyminUI;component/Themes/SyminExtra.xaml\"/\u003e\n            \u003c/ResourceDictionary.MergedDictionaries\u003e\n        \u003c/ResourceDictionary\u003e\n    \u003c/Application.Resources\u003e\n```\n## 🛠️ MVU Design (Working In Progress)\n\nIntroducing the new way to design the user interface.\\\n使用全新的设计模式制作用户界面！\n\n```c#\npublic class TestView : ViewContainer\n    {\n        /// \u003csummary\u003e\n        /// 提供视图\n        /// \u003c/summary\u003e\n        public override IView ViewProvider =\u003e MainView;\n\n        readonly State\u003cstring\u003e myText = \"My Text\";\n\n        //测试可切换控件\n        readonly State\u003cIView\u003e dynamicView = new Label(\"Label A\");\n        readonly State\u003cstring\u003e inputText = \"Input Message Here\";\n\n        readonly ObservableCollection\u003cstring\u003e textCollection = new()\n        {\n            \"1111\",\n            \"2222\",\n            \"3333\"\n        };\n\n        public VStack MainView =\u003e new VStack\n        {\n            new HStack\n            {\n                new Label(myText),\n                new Button(\"Change Value Button\")\n                    .OnClick(() =\u003e { myText.Value = \"Text Changed!\"; })\n            },\n            new HStack\n            {\n                new Button(\"Open Canvas\")\n                    .OnClick(() =\u003e\n                    {\n                        CanvasTestWindow testWindow = new();\n                        testWindow.Show();\n                    }),\n                new Label(\"Label In HStack\"),\n            }.HorizontalAlignment(HorizontalAlignment.Center),\n            new Grid()\n                {\n                    new ContentView(dynamicView)\n                        .GridLayout(0, 0),\n                    new Button(\"Change Content\")\n                        .OnClick(() =\u003e { dynamicView.Value = new Label(\"Changed View\"); })\n                        .GridLayout(0, 1),\n                    new InputField(inputText)\n                        .GridLayout(1, 0),\n                    new Button(\"Show Input Value\")\n                        .OnClick(() =\u003e MessageBox.Show(inputText.Value))\n                        .GridLayout(1, 1),\n                }\n                .Cols(\"2*\", (\"*\", 200, 400))\n                .Rows(\"auto\", \"auto\"),\n            new Button(\"Add List Item\")\n                .OnClick(TestCollection),\n            new ItemsView()\n                .Foreach(textCollection, x =\u003e new HStack\n                {\n                    new Label(\"List Items\"),\n                    new Button(x),\n                })\n        };\n\n        private void TestCollection()\n        {\n            textCollection.Insert(1, \"Inserted Item\");\n        }\n    }\n```\n![MVU Demo](./Images/MVUDemo.jpg)\n\n## ⚠ Known Issues 已知问题\n+ Slider view tick placement does not work.\\\n滑条的指示器样式未设计。\n+ MenuItem disabled style is not finished.\\\n菜单按钮禁用样式尚未完善。\n+ ListBox Header may not fit the row length.\\\nListBox的头部可能和内容没法对齐。\n\n## 📄 License 许可证\n[The MIT License](./LICENSE)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyminomega%2Fsyminui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsyminomega%2Fsyminui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsyminomega%2Fsyminui/lists"}