这是一个使用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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTI0NzctM2JjMGQ4ODEtNTc3ZS00YWEyLTg4MDItNjk4MTY5ZDcwMWE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdkYWUzNzZkMDUyZWQwNDIyYmIxNzU5OTMzMmQ3MGJlODAzYWE2YTc5NDkwOGUwODk2MDhmZmY2YWUyMzA3NWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.nWkmtv_a_phF6Zuk2NB-pQ03Wkbkqr30Gv4V9w15OeE)
![](https://private-user-images.githubusercontent.com/52397976/367912857-d3b13869-d0f8-457d-90d9-5a637c500b4a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTI4NTctZDNiMTM4NjktZDBmOC00NTdkLTkwZDktNWE2MzdjNTAwYjRhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRhMzc3Mjg3OTIwZTQxY2FiYjg1ZTBkYWNhMDgwNDE3NDFlMDAxZDBkZjBmM2M2YzY2ZjA1ZmE2Mjg2YzAyNjImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.2SmL-97xa4MlghjFrj6ignSn2diTwkzad3hgonRruC8)
![](https://private-user-images.githubusercontent.com/52397976/367912887-45920f83-41b9-4924-8e92-86123d15a2a4.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTI4ODctNDU5MjBmODMtNDFiOS00OTI0LThlOTItODYxMjNkMTVhMmE0LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ4NjJiM2U2N2JhZGU1NjlhY2ZjZTRlN2IxMDI0NTBiNmFhMjMzNDJlNmVhNGU1ZjgxODcyOTg3OTdhNmU4NjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.DnO79yzmMcmB0G2uLDoLJdlGK6m2RqasJS28Xm1aROE)
![](https://private-user-images.githubusercontent.com/52397976/367913022-4e41c4af-1a98-48b0-9c44-05ac48f0430e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTMwMjItNGU0MWM0YWYtMWE5OC00OGIwLTljNDQtMDVhYzQ4ZjA0MzBlLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWZlYzI3NDM5YzRkYjVkNjA3NzRkMmNlZmQ5NDYwMTZlYmRiOTE2MjM5YWZjY2MwMDlmNGY3ODIyMjA5OTdmYTUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.zQWgXMibG12OwUDGn3dEj2walbD9K4PZFHk3aeFO0lw)
![](https://private-user-images.githubusercontent.com/52397976/367913682-78415f9d-732c-4940-881c-beed7a6e9620.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTM2ODItNzg0MTVmOWQtNzMyYy00OTQwLTg4MWMtYmVlZDdhNmU5NjIwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTA0OGMzMzhmM2FmODZlYWE2NzQyYWRmY2RlMWZlZTg1YzUwMGI3MDMyMmVkOTljM2I5OThmNDQzYTMxYzRjN2MmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.URLJuEyVH1xVm0fnVEZHofcWhThaHE5FTlMtIEzQttg)
![](https://private-user-images.githubusercontent.com/52397976/367913781-b376f4ed-4ffd-4528-b1cc-6b0483f442e1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTM3ODEtYjM3NmY0ZWQtNGZmZC00NTI4LWIxY2MtNmIwNDgzZjQ0MmUxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWJhYWZmN2MzODYwMDdjNjJiMTNmMzY4NDk1MzU5YjFmZjlkYzI5MDNjNTk2ZGU5YmYxZjA5YTQ4MGI5NWUzMjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.L2K71KE5RlAhhN_d1wheWUaux_Ov8D0GOAg47bJjchA)
![](https://private-user-images.githubusercontent.com/52397976/367912477-3bc0d881-577e-4aa2-8802-698169d701a5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTI0NzctM2JjMGQ4ODEtNTc3ZS00YWEyLTg4MDItNjk4MTY5ZDcwMWE1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdkYWUzNzZkMDUyZWQwNDIyYmIxNzU5OTMzMmQ3MGJlODAzYWE2YTc5NDkwOGUwODk2MDhmZmY2YWUyMzA3NWEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.nWkmtv_a_phF6Zuk2NB-pQ03Wkbkqr30Gv4V9w15OeE)
![](https://private-user-images.githubusercontent.com/52397976/367913849-0cedb504-2f27-43b8-87ed-34e85f1d7b83.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTM4NDktMGNlZGI1MDQtMmYyNy00M2I4LTg3ZWQtMzRlODVmMWQ3YjgzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTAwZGY5YWJmODAxOWQxZGEwZjZmYTcyYTJjYzRiOTExMGY4ZmUwMDZiYmRjNDcwYmI0Y2RjNWZlMzA3OWM2MmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.dhMgEbcOQck6oFcgG3xEu3xSCEwKMiNO8IiUq6Rjl-c)
![](https://private-user-images.githubusercontent.com/52397976/367914741-f5e80933-9d18-47c1-81c6-eb55a680972a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTQ3NDEtZjVlODA5MzMtOWQxOC00N2MxLTgxYzYtZWI1NWE2ODA5NzJhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI0ZTFhODliZmM3N2NhNjVkYjM3YTFlM2JhZmJjNDBjMmU4ZDQzODU5Y2VjOWZiYTRjYWRiMmNhODYwYzY0YjUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.jaUM-hkA5VeGELwBCdlvjvujLkftsp-QtsM1lZL6gh8)
![](https://private-user-images.githubusercontent.com/52397976/367914855-d8aa51d5-c6e1-4a9a-95f8-e20a7c6f9f91.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTQ4NTUtZDhhYTUxZDUtYzZlMS00YTlhLTk1ZjgtZTIwYTdjNmY5ZjkxLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRmNGEyZTgyMmVhNzY4NjJlNmNlM2JhNDBhMWNmMWRiYTViZmRkYzA2NGNiM2UxODExMTFlNGQ0NjA4OTg4NTYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.lpSWK8F8bdYiimaRizdz5cFbKtCiiNeB1AlyRV0NSzE)
![](https://private-user-images.githubusercontent.com/52397976/367914898-c2cc6c22-8345-4333-83a2-61ab08883652.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTQ4OTgtYzJjYzZjMjItODM0NS00MzMzLTgzYTItNjFhYjA4ODgzNjUyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThmYmRiZTE4MjAwODVlNjUzNzFmYmI3NjZlNWE4ZDVjMzliNGY1YjBkYjJmNTg0ZDIzNmM0OTY5NzBkZTMwZjcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.0eaVIQJHE4fBhY2m_slQ3hUETV9MJ_ZIDTONU8XRp08)
![](https://private-user-images.githubusercontent.com/52397976/367914958-fd6aa0ca-14c1-4446-b6cb-2617bc15b373.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTQ5NTgtZmQ2YWEwY2EtMTRjMS00NDQ2LWI2Y2ItMjYxN2JjMTViMzczLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTEzYmZjZmUyZTc4OTE3ZDBjOGM2YmMxOGFiYzVhNjk3NjE1MTc3OTk4MWE2Mzk2NDljZmMyNzY4NmEzMDA1YjQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0._tQXfZUXEqoxKCmFjYNQc6WAK8vIDy7ybv7KGN8hg2A)
![](https://private-user-images.githubusercontent.com/52397976/367915009-be84fe63-4fb5-4a6c-a537-9907b88e648b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTUwMDktYmU4NGZlNjMtNGZiNS00YTZjLWE1MzctOTkwN2I4OGU2NDhiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQwNGU2YWNlZGI5NjdkMmQ1MDBkOTI5NGMyZjhjZDgyNWFjOWM2YTBjOThjYjE4Y2UxY2U5NzI3MjUyNDJkZmEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.xPPA_Z84ztkwYIBjtKD_f8cqBPcmllLN7sSDbyZfIQI)
![](https://private-user-images.githubusercontent.com/52397976/367915025-24db2d8b-b839-42b2-be8a-2fc6266dad77.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTUwMjUtMjRkYjJkOGItYjgzOS00MmIyLWJlOGEtMmZjNjI2NmRhZDc3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWRjMjA1ZmFhMDg5MzJkY2QyNzNmODViODBjM2U5NmMzODQ3MDlmNjkwYjg4MWUxNTc3YjEyNDk3OTkwMjY5YjAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.ahc57JPGtjBvqwQJH9IaFA8Y40f0_zX68oUGCQXlT9c)
![](https://private-user-images.githubusercontent.com/52397976/367915063-642ccf0d-f2df-4adc-bb87-b1246cbda0b7.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTUwNjMtNjQyY2NmMGQtZjJkZi00YWRjLWJiODctYjEyNDZjYmRhMGI3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTlmOWU1MzVhZGEwZmU0NzcxZWRhNTIzODg4NzkwN2I2YzUyYzRjZjhlNmZlMzI5YmM2YzU3NGViOGFhNmVmMzEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.5cgAfH-x2-J47bBb0XqyKK_gs4qAUV1XJq6y2GwVidM)
![](https://private-user-images.githubusercontent.com/52397976/367915082-bece2bfd-1bb9-436e-b928-929d3706398c.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNjc5MTUwODItYmVjZTJiZmQtMWJiOS00MzZlLWI5MjgtOTI5ZDM3MDYzOThjLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTc3NzIwMjg4YWE3MWY0ZDM4YTFkYzk5NTRhYjBlNGE0NDdiMGExNWY3NWVlZGUwNjg5ZTExZWNhZTQxMTdhNjEmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.x_JY_jaMU-_9lfv00pqk7jKee3UGLO2vmPq-ZdxIzbQ)
仓库中包含所有框架源代码。
- 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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNTQ3OTkwNTEtYWY3MGY0MjItNzA1Ny00ZTc3LWE1NGQtMDQyZWU4MzU4ZDJhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTdlMzI4ZGE4MjBjYjNjZDJmNzU3MGM2MTQ3ZjlmYzgyMzVmNWI0MGExODNjNWRkYTZhOTlhMzVlZTc1ZmMzMDMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.12uO_ruYN3rxQB1VV7rhIVi3jSZxxnqx29I7UWXOkWA)
![](https://private-user-images.githubusercontent.com/52397976/354799195-e4feaa10-a107-4b58-8d13-1d8be620ec62.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNTQ3OTkxOTUtZTRmZWFhMTAtYTEwNy00YjU4LThkMTMtMWQ4YmU2MjBlYzYyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVmYzJkZmEyYjk3NTFkN2Q4MTA1OWI1NDY0ZDRkY2U1MDk0ZWJiNWQ0MTM3NWVkMzhkOTEyMmFlYTYxZDUzZDAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.DyMJ0vd3xkECSUvCjjlxA6kX47kDzwwYM59kSFzOli8)
![](https://private-user-images.githubusercontent.com/52397976/354799464-5ff487f6-55e4-43e1-9abf-f8d419ee6943.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkzNDczMDAsIm5iZiI6MTczOTM0NzAwMCwicGF0aCI6Ii81MjM5Nzk3Ni8zNTQ3OTk0NjQtNWZmNDg3ZjYtNTVlNC00M2UxLTlhYmYtZjhkNDE5ZWU2OTQzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjEyVDA3NTY0MFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM4MWM1MGU2YzU0MWMwMjFkMmE3YzZiY2U2YTc5MmQ0NWExYjFjNGQwNWE1YWNmMjI4YmNiOTkzMjZhZWQ1Y2QmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.1927UImYV5rUH5xGHpjv07nnDdQrHROvPXCgmyTO0BI)
- 设置启动项目
- 按F5或点击运行按钮
- 推荐使用Windows 11
本项目为WPF开发者提供了宝贵的见解:
- 复杂UI重现:学习重现复杂用户界面的技术
- 自定义控件开发:了解构建自定义WPF控件的过程
- MVVM实践:在复杂应用中看到MVVM模式的实际实现
- Geometry Path使用:掌握使用Geometry Path创建复杂UI设计的技巧
- 性能优化:学习大型WPF应用的优化策略
欢迎对英雄联盟客户端(WPF)项目做出贡献!随时提交问题、创建拉取请求或提出改进建议。
本项目采用MIT许可证 - 详情请参见LICENSE文件。
通过这个英雄联盟客户端重现项目,体验WPF在重现复杂游戏界面方面的强大功能!