这是一个使用WPF技术高质量重现英雄联盟客户端的项目。该项目包含了WPF的各种技术实现,展示了大型项目分布式设计的广泛技术方法。
英雄联盟客户端 (WPF)
英雄联盟客户端 (Uno-Platform)
英雄联盟客户端 (WinUI 3)
我们从2008年开始研究和积累WPF技术经验。这些年来,Xamarin、MAUI、Uno-Platform、AvaloniaUI、OpenSilver等各种基于XAML的跨平台技术不断发展,为我们将在WPF中积累的技术扩展到跨平台开发提供了可能性。
这次发布的英雄联盟WPF版本基于XAML的丰富UX、C#的面向对象设计以及系统化的项目结构构建而成。它充分利用了WPF的强大功能,同时考虑了未来向其他基于XAML的平台扩展的可能性。
该项目展示了如何在WPF中实现大型项目。通过将复杂的控件实现为CustomControl,我们旨在为开发者提供丰富的学习材料。此外,它还包含了WPF的各种技术实现案例,展示了如何在实际项目中利用WPF的强大功能。
特别是,该项目提出了大型应用程序分布式设计的广泛方法。通过模块化结构、高效的状态管理以及可扩展的架构,展示了如何构建和管理复杂的应用程序。
Jamesnet.Core框架库基于.NET Standard 2.0设计,可以在WPF和Uno中同样运行。这个库在WPF中以Jamesnet.Window的形式提供,在Uno-Platform中以Jamesnet.Uno的形式提供。
该项目直接引用了Jamesnet.Core和Jamesnet.Window的实际源代码,使你能够学习基于XAML的框架的设计方法。
通过这个项目,我们旨在展示WPF的强大功能,同时提出未来向Uno-Platform、MAUI、AvaloniaUI、OpenSilver、WinUI3等各种基于XAML的平台扩展的可能性,开辟跨平台开发的新视野。
![](https://private-user-images.githubusercontent.com/52397976/367912477-3bc0d881-577e-4aa2-8802-698169d701a5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTI0NzctM2JjMGQ4ODEtNTc3ZS00YWEyLTg4MDItNjk4MTY5ZDcwMWE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE0MjUyY2I4OGQ3MGQxMDFkODQ5NTE1MGY3YThlNDc0M2U5ZWJhYTg2ZTFhOWI3MWI5ODM3ZjBhYjc0MjgyNzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.JpyswvcpMLtANjKmyBK1S7FohdgKDmxRVb2ijyTWJbU)
![](https://private-user-images.githubusercontent.com/52397976/367912857-d3b13869-d0f8-457d-90d9-5a637c500b4a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTI4NTctZDNiMTM4NjktZDBmOC00NTdkLTkwZDktNWE2MzdjNTAwYjRhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRmMzgwNWVlYWVjOTZhOTg2YTAxNjAwNmE1NWMyOTYzNTYxZWU3Y2I0NDQ4ODljZmYzYjk1MWY0MDc3NThlYTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.uLVrOeJ7E086NxAEheKhMf5aUsZH0kKCGi2L8PSyHJ4)
![](https://private-user-images.githubusercontent.com/52397976/367912887-45920f83-41b9-4924-8e92-86123d15a2a4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTI4ODctNDU5MjBmODMtNDFiOS00OTI0LThlOTItODYxMjNkMTVhMmE0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEzZGRiOGFjMTFjOTc2YmVmNDg5MzBiNWU1ZTEzN2Y0YmY2ZjZhOTE2M2UzYWRhMGNjNTk5MjVkY2EyMzAwMDQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.tKeTOZCIUKD3hrHdpCKE9m01_C0ON_CyE7z4nR7nbAI)
![](https://private-user-images.githubusercontent.com/52397976/367913022-4e41c4af-1a98-48b0-9c44-05ac48f0430e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTMwMjItNGU0MWM0YWYtMWE5OC00OGIwLTljNDQtMDVhYzQ4ZjA0MzBlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWIyN2MzY2UxOGJkNTRiZWFmMWVlNGQxNzNiZDRhNzNmZTkyNWRiMjRhZTQ5OWFlNTBlZmQ0YThiMjA4YzI5OWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.y0tnGLZSp-eaFdcN-Rnqq5njLhQTi8xckPPs2H2-YGU)
![](https://private-user-images.githubusercontent.com/52397976/367913682-78415f9d-732c-4940-881c-beed7a6e9620.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTM2ODItNzg0MTVmOWQtNzMyYy00OTQwLTg4MWMtYmVlZDdhNmU5NjIwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg4MjQyNDQyZDY4MjM2YjQ3NTkxY2Q2N2E5OGE1NWYwNDVkMTI1ZWU3MGMyY2UzMGFiMjQxZWZjODY2NzAwOWImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LTPu_egw5wt1mgwD9Pek1fWPaJhpHsTIkjPlBQPCtWw)
![](https://private-user-images.githubusercontent.com/52397976/367913781-b376f4ed-4ffd-4528-b1cc-6b0483f442e1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTM3ODEtYjM3NmY0ZWQtNGZmZC00NTI4LWIxY2MtNmIwNDgzZjQ0MmUxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTljYWQ4OTdiMTg1YjdkY2FjZWI0NzhhNTczZjg0NGU5MTc4NWE5NzVjYzYxMmFhYzAwMTVlYzA0NTQ3MGUyNTQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.WNzkHke94giinwIqF0Nw1e402dzRtLui_wBVJEp4ahY)
![](https://private-user-images.githubusercontent.com/52397976/367912477-3bc0d881-577e-4aa2-8802-698169d701a5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTI0NzctM2JjMGQ4ODEtNTc3ZS00YWEyLTg4MDItNjk4MTY5ZDcwMWE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTE0MjUyY2I4OGQ3MGQxMDFkODQ5NTE1MGY3YThlNDc0M2U5ZWJhYTg2ZTFhOWI3MWI5ODM3ZjBhYjc0MjgyNzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.JpyswvcpMLtANjKmyBK1S7FohdgKDmxRVb2ijyTWJbU)
![](https://private-user-images.githubusercontent.com/52397976/367913849-0cedb504-2f27-43b8-87ed-34e85f1d7b83.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTM4NDktMGNlZGI1MDQtMmYyNy00M2I4LTg3ZWQtMzRlODVmMWQ3YjgzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdjYTFmNTE0MGRmNmZiMTYxYTYxZTg1YjYwZTMyZDJjZDUxMDA4M2E2ZWY1M2U1MDY1MDUxYjk4NzlkMTJlZDcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.JZTav4NB0ysVMf3UvnYFLw9gJoB1J8lAJ9brzYuvwYI)
![](https://private-user-images.githubusercontent.com/52397976/367914741-f5e80933-9d18-47c1-81c6-eb55a680972a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTQ3NDEtZjVlODA5MzMtOWQxOC00N2MxLTgxYzYtZWI1NWE2ODA5NzJhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWQ3ZTFkNWUxMDQ3MGZhYTU5ZWI1YWQ0ZjdjMmVlOGE4YmI4MzkzMmNmYTk1MDlmNmRiNGViNzBmZTY0OTNiMjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.SrtZvG7y0bCo52AuqzbRonUj5rn39obIcndlNhzQw48)
![](https://private-user-images.githubusercontent.com/52397976/367914855-d8aa51d5-c6e1-4a9a-95f8-e20a7c6f9f91.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTQ4NTUtZDhhYTUxZDUtYzZlMS00YTlhLTk1ZjgtZTIwYTdjNmY5ZjkxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWI5N2Y3MGNhOThjOWI3YTQ5MWRjYjdlMGJlODM1ZmY5MjVkYWI1ZjMzZmYyYWFkOGNkYjA3MzgxYTA0YWU0ZjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.tgxnc51UTcslFqGKtMJpbPYthgb67tbPh5XinVxZHo8)
![](https://private-user-images.githubusercontent.com/52397976/367914898-c2cc6c22-8345-4333-83a2-61ab08883652.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTQ4OTgtYzJjYzZjMjItODM0NS00MzMzLTgzYTItNjFhYjA4ODgzNjUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM4ZWNmMjFlMDhkZmRlMzBmOGJmOTBjMjg3N2ExOTkyNzA1NzM2ZmU2YmUzZGNjMmIxOTczOWI5MmM0Y2M4ZjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.zQ2vBnxWnx1uOINwmh0BQOkQpDE_CfwpKlC45a7NEc0)
![](https://private-user-images.githubusercontent.com/52397976/367914958-fd6aa0ca-14c1-4446-b6cb-2617bc15b373.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTQ5NTgtZmQ2YWEwY2EtMTRjMS00NDQ2LWI2Y2ItMjYxN2JjMTViMzczLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTY4MjRhMDA4NmQyZWEyYzYxOTlhNTY1MzI5NWUwNGRiMTQ1Y2VjMzMyYzJhNmJlYzkxODljOWVmYzQ4MmJhMzcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.8zhIeNs-qzhMugHdjaMpJbigAMSyynP4bN6eU06OPoM)
![](https://private-user-images.githubusercontent.com/52397976/367915009-be84fe63-4fb5-4a6c-a537-9907b88e648b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTUwMDktYmU4NGZlNjMtNGZiNS00YTZjLWE1MzctOTkwN2I4OGU2NDhiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNmNTRhYTVhNDc0ODBhNjI0MmU3YmMxY2Q0YmMwNzUzZWFiNTkzYWY3YmM4Yzc4YTAxMzE3Y2FmMDcyN2JlZTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.MGRZSj-wbjCmLJLg6vpR6iI3Mep26UusewU_STTjTvY)
![](https://private-user-images.githubusercontent.com/52397976/367915025-24db2d8b-b839-42b2-be8a-2fc6266dad77.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTUwMjUtMjRkYjJkOGItYjgzOS00MmIyLWJlOGEtMmZjNjI2NmRhZDc3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWFlYzIxZjNmMjg4NDRmMjQ2Zjk0NDE0YjE5YTk1ODk2MGE1OGFmOWIxMTY3NDdmNjI3N2VhNzMwYTkzMDMxYjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.jWdM6CAY5yLjNAtIQxm6DKMRzdEhv6YJRLl8bxY948A)
![](https://private-user-images.githubusercontent.com/52397976/367915063-642ccf0d-f2df-4adc-bb87-b1246cbda0b7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTUwNjMtNjQyY2NmMGQtZjJkZi00YWRjLWJiODctYjEyNDZjYmRhMGI3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTRlZjQxZjVkNDRlMDJhN2FhN2ZjZTFmNTYwN2VmYTMxYjE3YTIyMzAwMmY2NmE3ZGEyNjdhZTJlYzU3OTQ5NzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.p8g31sJ6ZDMS6ZkrLGzubGyq0F-e51coYpCQ1NiHGRA)
![](https://private-user-images.githubusercontent.com/52397976/367915082-bece2bfd-1bb9-436e-b928-929d3706398c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTUwODItYmVjZTJiZmQtMWJiOS00MzZlLWI5MjgtOTI5ZDM3MDYzOThjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk5MDUzMzI0OWFkZTkxODAxYzBmYjdkZmY2ZDQ2MmNmNGJmMmNiNDRjMmY4NGJiYzM1NGUzNzYxZjUxYzEyOWMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.LS_q-mBT0xRYCjOfMOMip6FbAU6F2-gqIGbw63iQA0w)
仓库中包含所有框架源代码。
- Jamesnet.Core: 基于.NET Standard 2.0的跨平台核心库
- Jamesnet.Windows: 为WPF优化的窗口管理和UI框架
这两个库可以在WPF和Uno-Platform中同样使用,并包含了大型项目架构设计所需的所有核心功能。
-
大型项目架构
- 模块化和分布式系统设计
- 通过依赖注入实现松耦合
- 基于插件的可扩展结构
-
高级WPF技术
- 实现各种CustomControl
- 使用VisualStateManager进行复杂状态管理
- 数据虚拟化和UI虚拟化技术
-
性能优化
- 高效的资源管理和内存使用
- 应用异步编程模式
- 渲染优化技术
-
UI/UX设计
- 使用Geometry Path实现复杂图形
- 自定义动画和转场效果
- 动态主题系统
-
框架设计
- 基于事件的通信系统
- 实现状态管理模式
- 可扩展的导航系统
该项目充分利用WPF的强大功能,同时全面展示了基于Jamesnet.Core和Jamesnet.Window的高级设计模式和技术。通过提供大型应用程序开发所需的各种技术和模式的实际应用案例,它将成为WPF开发者的丰富学习材料。
我们希望这个项目能够激发WPF开发者的灵感,并成为大型桌面应用程序开发的最佳实践。此外,我们期望通过这个项目,能够探索WPF和Uno-Platform之间的代码共享策略以及跨平台开发的新可能性。
我们计划在未来开发MAUI、WinUI 3、AvaloniaUI、OpenSilver等新平台版本。
- .NET 8.0
- WPF (Windows Presentation Foundation)
- Jamesnet.Core
- Jamesnet.Windows
- Jamesnet.Uno
- Visual Studio 2022或更高版本
- .NET 8.0 SDK
- Jamesnet.Wpf NuGet包
git clone https://github.com/jamesnet214/leagueoflegends.git
- Visual Studio
- Visual Studio Code
- JetBrains Rider
![](https://private-user-images.githubusercontent.com/52397976/354799051-af70f422-7057-4e77-a54d-042ee8358d2a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNTQ3OTkwNTEtYWY3MGY0MjItNzA1Ny00ZTc3LWE1NGQtMDQyZWU4MzU4ZDJhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMyMDgwNTRlYTFhZDU5YThmNzgzODFlNTYwNjNjNGRjMWZmY2JmMTVkYTA5ZWU1YTU3YmI1MmE0MzU0YTJkOWQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.2-z31zPsNKw_zG0eYd0Hi7TorbOJsXF5We6fVDBHxP0)
![](https://private-user-images.githubusercontent.com/52397976/354799195-e4feaa10-a107-4b58-8d13-1d8be620ec62.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNTQ3OTkxOTUtZTRmZWFhMTAtYTEwNy00YjU4LThkMTMtMWQ4YmU2MjBlYzYyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRhYWNjYTgxYjcwZjFlZjc3OTFkZGRhMjRlODM2YjQzMzI5NjAzNzM1NWZjZmY4MTBkMzE4NTIyOTM1MWExMjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.aB-F3JNjA56PEt20VjujvlOYVr1mjjU7N4Z_kpl1ksI)
![](https://private-user-images.githubusercontent.com/52397976/354799464-5ff487f6-55e4-43e1-9abf-f8d419ee6943.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNDM2MTIsIm5iZiI6MTczOTA0MzMxMiwicGF0aCI6Ii81MjM5Nzk3Ni8zNTQ3OTk0NjQtNWZmNDg3ZjYtNTVlNC00M2UxLTlhYmYtZjhkNDE5ZWU2OTQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDglMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA4VDE5MzUxMlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNkNTcxODQyNTM3N2Y3ZjQzMjZiNjY5YjhkMjQ0Y2RmNGU1YTU2ODg2YTEyMWZlMzhlNDBjMGJjZGRhZGQyYjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.hQ9OkT50omA6MONlfqj17ztsF0eOCxsHX3ucOy2QJiw)
- 设置启动项目
- 按F5或点击运行按钮
- 推荐使用Windows 11
本项目为WPF开发者提供了宝贵的见解:
- 复杂UI重现:学习重现复杂用户界面的技术
- 自定义控件开发:了解构建自定义WPF控件的过程
- MVVM实践:在复杂应用中看到MVVM模式的实际实现
- Geometry Path使用:掌握使用Geometry Path创建复杂UI设计的技巧
- 性能优化:学习大型WPF应用的优化策略
欢迎对英雄联盟客户端(WPF)项目做出贡献!随时提交问题、创建拉取请求或提出改进建议。
本项目采用MIT许可证 - 详情请参见LICENSE文件。
通过这个英雄联盟客户端重现项目,体验WPF在重现复杂游戏界面方面的强大功能!