ASP.NET MVC에서는 기본적으로 생성된 프로젝트에서 모델(클래스)의 필드에 정의된 DisplayName을 View에서 표현할 수 있다. WPF/Winform에서 사용자 함수인 GetDisPlayName()을 사용해보고 여기에 LINQ, Lambda를 이용해서 모델을 사용하는 간단한 예제를 작성했다.
public static string GetDisPlayName<T>(string fieldName) where T : class
{
var nameInfo = typeof(T).GetProperty(fieldName);
var obj = nameInfo?.GetCustomAttributes(typeof(DisplayNameAttribute), true);
return obj?.Cast<DisplayNameAttribute>().FirstOrDefault()?.DisplayName ?? fieldName;
}
// Console.WriteLine(GetDisPlayName<Person>(nameof(Person.EmpName)));
화면에서 사용한 전체 소소는 아래의 내용을 참고한다.
Fluent Ribbon Control Suite is a library that implements an Office-like (Microsoft® Office Fluent™ user interface) for the Windows Presentation Foundation(WPF). It provides well-customized controls such as RibbonTabControl, Backstage, Gallery, QuickAccessToolbar, ScreenTip and so on(fluent-CodePlex 2014).
Visual Studio에서 WPF 프로젝트를 생성 후 참조에 Nuget으로 Fluent.Ribbon 패키지를 추가한 후 아래의 내용에 따라 메인 윈도우를 수정하면 기본적으로 리본 환경의 윈도우를 생성할 수 있다. 자세한 내용은 Documentation을 참고한다.
Microsoft의 .NET Core 3 정식 버전 출시가 눈앞에 다가왔다. 아마 1~2개월 안으로 정식 버전이 나오고 바로 3.1 LTS 버전도 발표할 것이다. Core 3 부터 윈도우 애플리케이션을 위한 WinForm과 WPF 개발을 지원한다. WPF 기반으로 애플리케이션을 개발하면서 기본적인 방법론을 정리해보았다. 특히 MVVM(Model-View-ViewModel) 패턴에 있어 Caliburn.Micro 패키지는 매우 유용하다. Core는 기존의 .NET Framework에 비해 가벼움, 성능, 배포가 훨씬 용이하다.
주제 | 메인사이트 | 튜토리얼 |
---|---|---|
XAML 디자인 | WPF-Microsoft | ToskersCorner AngelSix Design com WPF |
Caliburn.Micro - MVVM | Caliburn.Micro | IAmTimCorey Dot NET Guide NET Interview Preparation |
Dapper - Simple Object Mapper | Dapper | IAmTimCorey CodAffection |
EPPlus - Excel spreadsheets | EPPlus | EVERYDAY BE CODING David Stovell |
FastReport Open Source - Reporting Tool |
FastReport OpenSource | Documentation fropensource Fast Reports |
ConfuserEx2, ILSpy - Source Protector |
ConfuserEx ILSpy |
Documentation ILSpy |
C# Tutorial | NET Core Home | freeCodeCamp kudvenkat |
Caliburn.Micro, MVVM에서 기본적인 프로젝트 구성 폴더(Commands, Helper, Models, ViewModels, View)와 라이브러리 개발 구성(Dapper, Repository, Database)d에 따른 소스를 부분적으로 작성하고 테스트했다. 아래는 해당 소스이다.