Using Data Binding to ListBox(사용자 데이터 바인딩) - Without a DataTemplate
WPF 2007. 9. 7. 02:01 |사용자가 지정한 여러가지 정보들을 ListBox에 표현하는 방법을 기술합니다.
하나의 사용자 정보에는 여러개의 정보가 포함되어 있으며,
그 정보를 ObservableCollection 와 같은 Collection의 객체로 리스트화 합니다.
본 내용은 WPF Application을 기초로 합니다.
** 사용자 데이터 구성**
public class Place
{
private string _name;
private string _state;
public string Name
{
get { return _name; }
set { _name = value; }
}
public string State
{
get { return _state; }
set { _state = value; }
}
public Place(string name, string state)
{
this._name = name;
this._state = state;
}
public override string ToString()
{
//return base.ToString();
return _name.ToString();
}
}
public class Places : ObservableCollection<Place>
{
public Places()
{
Add(new Place("Bellevue", "WA"));
Add(new Place("Gold Beach", "OR"));
Add(new Place("Kirkland", "WA"));
Add(new Place("Los Angeles", "CA"));
Add(new Place("Portland", "ME"));
Add(new Place("Portland", "OR"));
Add(new Place("Redmond", "WA"));
Add(new Place("San Diego", "CA"));
Add(new Place("San Francisco", "CA"));
Add(new Place("San Jose", "CA"));
Add(new Place("Seattle", "WA"));
}
}
**xaml에서 사용방법**
1. 네임 스페이스 추가
xmlns:c="clr-namespace:WpfApplication1"
2. Window.Resources에 클래스 등록
<Window.Resources>
<c:Places x:Key="PlacesData" />
................
</Window.Resources>
3. 화면 구성
<StackPanel>
<TextBlock FontSize="18" Margin="5" FontWeight="Bold"
HorizontalAlignment="Center">Data Trigger Sample</TextBlock>
<ListBox Width="180" HorizontalAlignment="Center" Background="Honeydew"
ItemsSource="{Binding Source={StaticResource PlacesData}}"/>
</StackPanel>
아래와 같은 화면으로 구성이 됩니다.
위의 내용들을 보시면 하나같이 WpfApplication1.Place 라고 나옵니다.
이것은 Collection 내부에 있는 오브젝트의 값을 ToString를 통해서 기본 값을 가져 오기 때문인데요(말이 좀 그렇다^^) 여기서 ToString()를 오버라이트 해서 _name의 값을 리턴 하도록 해보겠습니다.
Place 클래스 내부에 ToString()를 추가합니다.
public override string ToString()
{
return base.ToString();
}
추가를 하게 되면 위와 같은 코드가 자동으로 추가가 됩니다.
여기서 return base.ToString()를 return _name.ToString()로 바꾸어 주면
위의 내용이 아니라 이름으로된 결과물을 보실수 있을겁니다.
이후에는 Place에 있는 정보들을 다 보여 주는 템플릿을 구성할 수 있습니다. ^^
본 예제는 msdn 로컬 파일주소를 참조 하세요.
ms-help://MS.MSDNQTR.v90.en/wpf_conceptual/html/0f4d9f8c-0230-4013-bd7b-e8e7fed01b4a.htm
(물론 웹에도 같은게 있습니다. 주소는 직접 찾기 바랍니다. ^^..)