본문 바로가기

C#의 속삭임

[C#][다국어]리소스 사전을 이용한 다국어 지원 * 다국어 지원을 수동으로 지원 할 필요성이 있을때가 있다. * rexs파일로 지원을 하고 있는것 같지만 나의 실력이 부족하여 너무 어렵다.* 그래서, 나는 리소스 사전을 이용하기로 마음 먹었다. 인터넷을 참고하여 작성해보았다. * 파일을 추가한다. 다국어 언어를 담고 있을 리소스 사전 파일들이다. 추가>ResourceDictionary 로 해당 파일을 추가하자.StringResources.en-US.xamlStringResources.ko-KR.xaml * 위의 두파일 내용 연습 * 프로그램 시작시 해당 랭귀지 파일중 하나를 선택한다.protected override void OnStartup(StartupEventArgs e) { languageChange("ko-KR"); base.OnStartup.. 더보기
[C#][WPF][MVVM]TreeView * 트리뷰를 MVVM구조로 만들까 한다. 각 구조별로 코딩된 소스를 기재 할까 한다. * Model [지금 구현하고 하는 것에는 Model이 꼭 필요한것은 아니다.]* ServerInfoService.csclass ServerInfoService : IServerInfoService { private ServerInfoItem item = new ServerInfoItem("", "");//Item을 옮길녀석 public void GetServerTree(Action callback) { List ItemList = new List(); //루트 입력 테스트 item.ItemList.Add(new ServerInfoItem("전체서버", "")); //자식들 입력 테스트값 item.ItemList[0]... 더보기
[C#][Window]Window의 계층구조 만들기. 1. ShutdownMode이용.using System;using System.Collections.Generic;using System.Text;using System.Windows;using System.Windows.Input; namespace ThrowWindowParty{ class ThrowWindowParty : Application { [STAThread] public static void Main() { ThrowWindowParty app = new ThrowWindowParty(); //MainWindow가 종료 될때 모두 같이 종료된다. app.ShutdownMode = ShutdownMode.OnMainWindowClose; app.Run(); } protected overrid.. 더보기
[C#][Application][Event]Application의 시작과 종료 이벤트 * 이벤트 핸들러를 사용하여도 되지만, 그렇게 하지 않고 직접 상속받아서 오버라이드 하여 작성한 예제 소스이다.using System;using System.Collections.Generic;using System.Text;using System.Windows; namespace InheritTheApp{ class InheritTheApp : Application { [STAThread] public static void Main() { InheritTheApp app = new InheritTheApp(); app.Run(); } /// /// Application의 Run이 실행되면 실행되는 녀석으로 초기화에 유용하다. /// /// protected override void OnStartup(S.. 더보기
[C#][WPF][이벤트 기초]이벤트 * 아래는 이벤트 예제 문이다.using System;using System.Collections.Generic;using System.Text;using System.Windows;using System.Windows.Input; namespace HandleAnEvent{ class HandleAnEvent { [STAThread] public static void Main() { Application app = new Application(); Window win = new Window(); win.Title = "Handle An Event"; win.MouseDown += WindowOnMouseDown; app.Run(win); } static void WindowOnMouseDown(obje.. 더보기
[C#][WPF] 클래스 계층도 * 클래스 계층도Object DispatcherObject (abstract)ApplicationDependencyObjectVisual (abstract)UIElementFrameworkElementControlContentControlWindow* http://hongal.tistory.com/73 에서 기본적인 WPF 프로그램을 실행 해 보았다. 거기서 보면은 Application과 Window를 생성함을 볼수 있었다.* Application 과 Window는 모두 DispatcherObject에서 상속 된다. 차이점이라면 Window가 훨신 아래로 내려 간다는 것이다.* 또한, Application은 눈에 보이지 않지만 Window는 표준창으로서 화면에 표시된다.* 하나의 프로그램은 하나의 App.. 더보기
[C#][WPF] 첫시작. * 첫 시작에 앞서 첨부 파일의 빈프로젝트를 받아 비쥬얼 스튜디오에 프로젝트 템플릿을 등록한다. * 탬플릿 추가 방법은 비쥬얼 프로젝트 탬플릿 폴더에 걍 넣으면 된다. 1. 프로젝트 생성후 SayHello.cs 클래스 파일을 만든다. 그리고 실행 시키면 끝난다.using System;using System.Collections.Generic;using System.Text;using System.Windows; namespace WPFTest{ class SayHello { [STAThread] public static void Main() { Window win = new Window(); win.Title = "Say Hello"; win.Show(); Application app = new Appl.. 더보기
[C#][WPF]데이터 바인딩 * 데이터 바인딩은 크게 두가지로 구분한다.** 소스 : 데이터를 의미한다.** 타깃 : 컨트롤을 의미한다.* StaticResource와 DynamicResource같이 Binding은 마크업 확장이다. * xmlns에서 간단한 바인딩 예제 형태 * 엄밀하게 말하면 바인딩의 정의문 즉, {}안에 문장은 마크업 언어가 아님으로 ""를 붙일수가 없다. 하지만 타깃2처럼 한다면 가능하다. 꼭 "을 붙일거라면 타깃2처럼 사용하면 된다.* Label.Content는 생략될수 없다. 왜냐면 타깃은 DependencyProperty여야 한다. 즉, 바인딩은 반드시 의존프로퍼티의 지원을 받는 프로퍼티에서 수립되어야 하며, 컨트롤과 엘리먼트는 그 의존 프로퍼티의 변화에 반응하게 설계되어 있기 때문이다. * Bindin.. 더보기
[C#][WPF][프레임워크][MVVM] MVVM Light * 비쥬얼 스튜디오에 WPF가 있었다. 문득 궁금해졌다. 그래서 찾아 보았다.** 실버라이트 기반으로 만든 어플리케이션 어쩌구 저쩌구..라고 그런다; 중요한것은 이것이 아니다. 실버라이트랑 비슷한 개발 형태를 뛴다는 것은 중요하다. 즉, 개발시 디자이너파일이 따로 분리 되어 있다.** 웹개발자들은 MVC에 익숙하다. 하지만 이벤트 기반의 어플리케이션은 MVC로 분리는 말이 맞지가 않다. 그렇다 이벤트 기반의 어플리케이션 개발시 사용하는 패턴이 MVVM이다.** 물론 다른 패턴도 있겠지만 아무튼 이렇다는게 중요하다.** 그래서 MVVM에 대해서 공부하다 보니 여러개가 나온다. MVVM, Command, Behavior 이래 용어가 나온다. 그래 이게 중요한다. * MVVM Light Toolkit 이란? .. 더보기
[C#][패턴] MVVM * 아..책을 사서 공부 해야되나!~ ㅠ.ㅠ 학교 공부에 학업에 허리가 휜다 휘어 * 이번에는 MVVM에 대해 공부해본다.* 웹에는 MVC가 있다. 하지만 그건 웹이고...실버라이트나 WPF에는 MVVM(Model-View-ViewModel)을 쓴단다. * MVVM패턴이란?** 데이터 모델분과 뷰 그리고 뷰에서 발생되는 이벤트 행동을 뷰모델로 나눈는 것이다.( 근데 작업을 하다 보면 몰라도 자연스래 이래 나누고 싶었을것이다...-0-)** 즉, 일반적으로 View(XAML, Code+이벤트핸들러)DataModel이었는데, 이걸 View(XAML,code)ViewMode(State+Operations)DataModel로 나눈다. * MVVM패턴 왜쓰나?** MVC랑 같다. 디자인 개발자를 구분하여 협업하기.. 더보기