통합검색
· 마을서비스란?  · 포럼마을  · 일반마을  · 테마마을  · 마을랭킹  · 활동왕
· 덱스퍼트란?  · TECBOX   · PRSBOX   · 이용안내  
· DEXT제품군  · 솔루션베이  · S/W & ESD 컴포넌트
· 프로그램베이
· LiveSeminar  · LiveConference
WPF & Silverlight 포럼마을입니다.
  마을등급 WPF & Silverlight   이 마을은 포럼마을 입니다이 마을은 자유가입제 마을 입니다 마을소개 페이지로 이동 전입신청
마을촌장촌장 서학수 주민 728 since 2008-07-17
우리마을 공지사항
질문&답변
강좌&팁
자유게시판
자료실
앨범
[마을 게시판]
WPF 강좌
랑데브 게시판
칼럼 게시판
개발자 고충상담
Dev Talk
자유토론방
벼룩시장
재나미 우스개
구인/프로젝트 정보
사람인 채용 게시판
  고객지원 게시판
마이 데브피아
 나의 e-Money 내역
 활동왕 My Page
 스크랩한 게시글보기
 쪽지관리
 주소록관리

 강좌&팁
 SL5...Twitter Client 2 (MVVM)  | Silverlight 2011-05-11 오후 2:00:55
 kaki104  kaki104님께 메시지 보내기kaki104님을 내 주소록에 추가합니다.kaki104님의 개인게시판 가기 번호: 145 추천:0  / 읽음:5,550

한시간 넘게 작성한 내용 날리고 나니 다시 작성하기가 쉽지 앙쿤요..

음..참 마음이 아프네요;;다시 작성해야하는..쿨럭

 

Silverlight5...Twitter Client 2 (MVVM 패턴으로 변경)

셈플뷰 페이지

 

 

1. MVVM패턴으로 변경

1-1. MVVM : Model + View + ViewModel의 약자 이며 자세한 사항들은 'MVVM 패턴' 이란 단어로 검색하면 알수있다.

1-2. 구성

 

    public class CTwitterViewModel : INotifyPropertyChanged
    {

        //프로퍼티 체인지 이벤트 부

        

        //프로퍼티들

 

        //생성자

 

        //커맨드들
    }

    대략 위의 구성을 참고

 

1-3. 뷰모델 클래스를 만드는 것은 단순하나, 뷰모델이 가지는 여러가지 의미는 직접 느껴야한다. 여러 자료들을 읽으면서 알 수 도 있지만 자기가 직접 만들어서 사용해 보면 더 빠르게 알 수 있으니 이 뷰모델을 참고해서 직접 만들어 보기 바란다.

 

2. ActionCommand 사용

2-1. 제물(XAML)은 스트림라인드뷰 엔진을 사용하는 뷰이다. 뷰와 모델은 서로 독립적으로 실행되기 때문에, 루즐리 커플드 방식으로 프로그램을 해야한다. 그래서 제물에서의 명령실행 방식은 커맨드 오퍼레이션이다.

 

커맨드 오퍼레이션을 구현하기 위한 방법은 몇가지가 있는데. 여기서는 ActionCommand를 이용하는 방법에 대해서만 설명한다.

2-2. 커맨드 구현

    * 일단 Add Reference로 Microsoft.Expression.Interactivity, System.Windows.Interactivity 2개를 추가한다.

    4.0에서는 별도 프로그램을 설치해야만 추가할 수 있었는데 5.0부터는 기본으로 바로 추가할 수 있다.


    using Microsoft.Expression.Interactivity.Core;      //ActionCommand

 

 

        #region 트윗 로드 커맨드
        private void LoadTwitter()
        {
            //로드커맨드 명령 실행
            if (IsBusy == false)
            {
                webclient.DownloadStringAsync(new Uri("http://twitter.com/statuses/public_timeline.xml"));
                IsBusy = true;
            }
        }
        ICommand load;
        //로드명령
        public ICommand LoadCommand
        {
            get
            {
                if (load == null)
                {
                    //ActionCommand를 만들어서 명령어 처리를 할 수 있도록 함
                    load = new ActionCommand(() => LoadTwitter());
                }
                return load;
            }
        }
        #endregion

    LoadCommand를 구현한 것이다. LoadCommand를 실행 시키면 LoadTwitter()함수를 실행해서 새로운 트윗을 조회한다.

 

2-3. 커맨드 바인딩

*블랜드 5.0을 사용해서 바인딩 한다. 물론 VS2010에서 직접 손으로 입력해도 되지만, 블랜드를 이용하는 것을 추천한다.

 

2-3-1. 상단 button에 InvokeCommandAction을 추가한다. 아래보이는 항목을 드레그해서 버튼위에 놓는다.

 

2-3-2. 버튼을 추가하고 나면 왼쪽 아래에 button1아래에 InvokeCommandAction이 되가 된것을 볼 수 있다.

InvokeCommandAction을 선택하면..

 

2-3-3. InvokeCommandAction의 프로퍼티들을 설정할 수 있다.(오른쪽 상단)

아래 노란색이 이미 바인딩이 되어있다는 표시이다.

상단의 그림에서 노란색을 클릭하고 Data Binding을 선택하면

 

LoadCommand를 선택하고 OK를 눌러서 완료한다.

 

소스에 포함되어있는 내용들

1. ActionCommand 선언, 사용

2. Converter 선언, 사용

3. MVVM 패턴으로의 변환

4. ListItemTemplete에 몇가지 바인딩을 더 추가했음

 

질문은 리플로 남겨주고, 다음에는 MEF를 추가해서 여러가지 뷰에 적용할 수 기능을 추가하도록 하겠다.

 

아함.. 작성한거 한번날라가니 글쓰고 싶은 마음이 사라지는.;;

 

코멘트쓰기
  좋음   놀람   궁금   화남   슬픔   최고   침묵   시무룩   부끄럼   난감
* 코멘트는 500자 이내(띄어쓰기 포함)로 적어주세요.
목록 보기   지금 보고 계시는 글을 회원님의 my Mblog >> 스크랩에 넣어두고 다음에 바로 보실 수 있습니다.  
회사소개  |   개인정보취급방침  |  제휴문의  |   광고문의  |   E-Mail 무단수집거부  |   고객지원  |   이용안내  |   세금계산서
사업자등록번호 안내: 220-81-90008 / 통신판매업신고번호 제 2017-서울구로-0055호 / 대표: 홍영준, 서민호
08390, 서울시 구로구 디지털로32길 30, 1211호 / TEL. 02_6719_6200 / FAX. 02-6499-1910
Copyright ⓒ (주) 데브피아. All rights reserved.