2012-06-11 5 views
2

저는 Windows Phone 7 개발을 처음 사용합니다. 설정 앱 페이지와 매우 유사한 페이지를 만들어야합니다. 이런 식으로 뭔가 (하지만 상단의 메뉴 및 각 항목에 대한 서브 텍스트없이) :
http://dotnetapp.com/wp-content/uploads/2012/05/BadSettingsPage.pngWP7 : 스타일 목록 상자 항목

은 지금까지 나는 항목 목록 상자를 가지고 있지만, 항목 중 하나의 항목 색상 변경 및 클릭 설정 응용 프로그램과 같은 "푸시 버튼"효과가 없습니다.

첫 번째 질문은이 아름다운 푸시 버튼 효과를 만드는 방법입니다 (클릭 위치에 따라 버튼을 눌렀을 때 기울임).

두 번째 질문은 스타일을 다르게 지정하는 것입니다. 목록 상자의 ItemsSource는 다음과 같이 정의된다 :

List<string> firstList; 
List<string> secondList; 

public MainPage() 
{ 
    ... 
    List<string> lst = new List<string>(); 
    lst.AddRange(firstList); 
    lst.AddRange(secondList); 
    listBox1.ItemsSource = lst; 
    ... 

내가 항목이 파란색이어야한다 firstList의 색상 인 경우가 예를 들어, firstList 또는 secondList에서 오는 여부를 다른 항목 스타일을해야합니다.

나는 그것이 StaticResource을 사용하여 이루어져야한다고 생각하지만 확실하지 않습니다. 어쩌면 내가 어떻게 든 문자열을 감쌀 필요가 있기 때문에 그것이 나오는 목록을 정의하기위한 getter를 가질 것이다.

감사합니다.

+1

첫 번째 질문의 대답은 Windows Phone 용 Silverlight Toolkit의 일부인 TiltEffect입니다. –

+0

두 번째 질문이 다릅니다 - 위의 이미지에서 라틴어 인 '두 번째 줄'이 secondList이고 제목이 firstList입니까? –

+1

@WilliamMelani 10x, 두 번째 주석 : 아니오, 각 항목에 텍스트 블록 하나만 있으면되지만 'firstList' 또는'secondList'에 있는지 여부에 따라 다르게 스타일을 지정해야합니다 ( –

답변

1

질문 1 대답한다 (윌리엄 Mekanis 주석 참조) 당신이 ... 변화가 볼 수있는 문자열 목록을 바인딩 ... 하나의 큰 문제가 질문이 들어

는 항목이오고있는 목록에서 . 데이터 원본 목록의보기 모델과 같은 것을 만들 수 있습니다. 같은

뭔가 (NotifyPropertyChanged가 여기에 무시 필요하고 또한 ObservableCollection에 사용하는 경우를 구현한다)) : 경우

public class ListDataSourceViewModel 
{ 
    public string Text {get; set;} 
    public bool IsFromFirstList {get; set;} 
} 

당신이 또한리스트 식별자로 열거 또는 무엇이든을 사용할 수 많은 목록을 가지고있다. ... 당신이 좋아하는 데이터 소스에 대한 새로운 목록을 작성하는 것이

: 그 뒤 텍스 바인딩 당신을 listitem에 대한 DataTemplate을을 만들

lst.AddRange(firstList.Select(item => new ListDataSourceViewModel 
    { 
     Text = item, IsFromFirstList = true 
    } 
).ToArray()); 
lst.AddRange(secondList.Select(item => new ListDataSourceViewModel 
{ 
    Text = item, IsFromFirstList = false 
} 
).ToArray()); 

을 변환기를 사용하여 IsFromFirstList 속성에 텍스트 블록 및 텍스트 블록의 글꼴 색을 지정합니다.

이 코드는 VS가 아닌 마음에서 작성되었습니다. 문제없이 붙여 넣기를 복사 할 수 있으면 shure하지 말고 아이디어를 제공해야합니다.) datatemplate 및 변환기를 만드는 데 도움이 필요하면 알려주세요.

편집 : SPECIALY (전위) 큰 목록에서, 변환기를 사용하여 ... 내 제안을 다시 생각

, (보기의 성능 지점에 대한) 좋은 생각이 아니다. 귀하의 경우에는 뷰 모델에서 필요한 색상을 직접 사용하는 것이 문제가되지 않습니다.

는 내가 VM이 생성 될 때 필요에 따라

public bool IsFromFirstList {get; set;} 

public Color WhatEverColor {get; set;} 

로 설정을 변경하고 당신이 그것을 필요로 어디든지에 바인딩합니다.

희망이 있습니다.

+0

) 나는 C#과 xaml에 완전히 익숙하다. 귀하의 솔루션은 간단하지만, 어떻게 배경색을 'IsFromFirstList' 속성에 바인드하기 위해 변환기를 사용합니까? –

+0

내 답변을 수정했습니다. –