라벨이 mvvm인 게시물 표시

RibbonControlLibrary 초기화(?) 속도 문제

http://social.msdn.microsoft.com/Forums/ko-KR/visualcsharpko/thread/27948d4a-1c12-4646-bd13-6246e4f26ed5 MSDN 포럼에 질문을 올렸는데 아무런 닶이없다. 결국 .Net Framework 4.0 Client Profile 로 환경을 다시 맞추어 게시하여 구동속도가 느린 pc에서 테스트 해보았다. 결과는 다 빨라졌다. 결국, 리본 초기화시 느려지는 문제는 원인도 모르고 넘어가야할것 같다. SQLite가 런타임 혼합한다고 불평해서 구글링해서 app.config 에 supportedRuntime 에 에트리뷰트를 하나 추가해주었다. 나머지 모듈과 unity container 가 잘 동작하는지 테스트하고 AvalonDock 2.0 베타 버전까지 테스트 해봐야겠다. * AvalonDock 은 prism 사용시 레이아웃을 저장하면 region 이 사라진다. 내공이 딸려서 수정은 못하고 AvalonDock 2.0부터는 prism을 지원한다고 하니 테스트 해봐야겠다. ============================================================= 추가로 테스트한 결과 리본컨트럴을 어셈블리 서명을 확인하는것 같다. 처음엔 리본컨트럴이란 생각을 못해서 서명확인을 하지않도록하는건 무시했었다. fx3.5에서 app.config 에 서명확인을 하지 않도록하면 빠르게 실행된다. 하지만, 네트워크 설정값에 뭔가 timeout같은 값이 있기때문에 특정pc에서 느려지는것 같다.

Avalondock + UnityContainer (1)

이미지
처음하는 C#이라 정리하면서 개념 좀 확실해 주입할려고 포스팅한다. 요구사항은 창들이 VisualStudio 처럼 docking 가능해야한다. 각 모듈은 가능한 독립적으로 개발 가능해야 한다.(협업) 나머지 요구사항은 지금 정리하고자 하는 내용과는 관계없어 일단 Dock 가능한 라이브러리와 패턴앤프랙틱스의 Composite Application Library 부분만 정리할려고 한다. Avalondock    코드플렉스( http:// avalondock .codeplex.com ) 에서 다운받을수 있으며 샘플이 제공된다. Visual Studio 와 같은 Dock 기능을 제공한다. Composite Application Library   CAB(Composite Application Block) 의 WPF 버전( http://msdn.microsoft.com/en-us/library/ff648611.aspx )으로 MVVM 패턴을 손쉽게 구현할수 있다. 요즘 많이 사용하는 프레임워크의 기본적인 IoC(Inversion of Control) , Container 등 내가 필요한 것만 있고, 적당한 예제가 있어서 선택했다. 그리고, EventAggregator 패턴이 구현되어 있어 모듈간 종속없이 통신할수 있어 결합도를 낮출수 있다. 1. 준비 VisualStudio(VS)에서 새프로젝트 만들기를 선택하고 템플릿에서 "WPF 응용프로그램"을 선택한다. 프로젝트가 생성되면 App.xaml 에서 StartupUri 를 제거한다. Window1.xaml 을 제거하고 Shell.xaml을 추가한다. 다운받은 Avalondock Manger 와 CAL을 참조추가 해준다.( 프로젝트에 LIB를 만들어 DLL파일을 넣고 참조하였음) Bootstrapper.cs 파일을 추가하고 UnityBootstrapper 를 상속받아 CreateShell을 구현한다. public class Bootstrappe...

WPF 이미지위에 라인 그리기(WPF DrawLine on exist Image)

WPF 기초가 부족해 삽질 한참 하다가 별것 아닌 방법으로 해결했다. 처음엔 Canvas위에 그릴려고 Canvas객체를 가져왔는데 WinForm 처럼 Graphics를 가져올수 없었다. 구글링해보면 제목은 WPF이고 Graphics를 가져와 그걸로 그리는 예제가 있어서 쉽게 끝날줄 알았는데, 한참 헤매었다. 답은 간단하다. 캔버스에서 이미지 다음에 객체를 추가하면 끝난다.(허무했다 ㅠ ) <Canvas Name="myCanvas">     <Image ImageSource="....."/>     <Line X1="10" Y1="10" X2="100" Y2="200" /> </Canvas> 동적으로 추가하는  코드도 마찬가지다  myCanvas.Children.Add( new Line{X1=10,Y1=10,X2=100,Y2=200} ); ViewModel로 바인딩해서 많은 선을 그렸었는데 역시 마찬가지로 이미지다음에 Template을 추가해 바인딩 해놓으면 쉽게 된다.

Model-Model of View-View(MVVM) Pattern

디자인 패턴중 하나인 MVC는 1979년에 그 개념이 나왔다.(1980년이가?) 2004년 마틴파울러가 PM 패턴을 말하였고,  그후 MVP(Model-View-Presenter) 패턴, MVVM 패턴이 나왔다. 10여년전에 CGI/C를 이용해 웹페이지를 만들때 View를 분리해보았다. 함수포인터를 이용해 View를 교체하였는데... 그때가 즐거웠다. ㅋ  또.. 주제하고는 관련없는 ...  MVVM패턴은 구글에서  mvvm 하면 관련 자료가 많이 나온다. 먼저 msdn 자료( http://msdn.microsoft.com/ko-kr/magazine/dd419663.aspx )와  codeproject 자료( http://www.codeproject.com/KB/WPF/MVVMQuickTutorial.aspx ) 가 정리가 잘되어있었다. 이해할 수 있을만큼 예제와 설명이 있다. 역할을 정리해보면 ... View : User Interface 이다. data를 표현해준다. user와 interaction한다.  ViewModel : View에서 필요한 데이터와 사용자 입력에서 model과 관계를 처리한다. Model : Data와 Buisiness logic 을 처리한다. Model은 ViewModel의 존재를 모르고, ViewModel은 presenter에서 처럼 view의 참조는 필요없다.  WPF의 이벤트(Event) 시스템을 이용해, ViewModel에서 데이터 변경이 일어날때 View는 해당 이벤트를 수신하여 View를 다시 랜더링한다.  이때 WPP에서 View는 보통 xmal로 작성되며 DataContext 를  ViewModel로 참조, 바인딩된다. 데이터의 validate는 Model이 담당하며 ViewModel은 View의 추상화이다.  MVVM은 WPF에서 좀더 특화된 PM패턴이라고 위 msdn링크에서는 말하고 있다. ...