문제
누구든지 WPF에서 컨트롤(ComboBox, ListBox 등)에 대해 DataBinding을 수행하는 방법을 보여 주기 위해 좋은 리소스를 알려줄 수 있습니까?(또는 나에게 단서를 던져 줄 수 있습니까?)WinForms의 모든 장점이 나에게서 사라져 버리자 나는 약간 당황했고, 처음부터 그다지 똑똑하지도 않았습니다...
해결책
튜토리얼 비디오는 다음에서 찾을 수 있습니다. 윈도우 클라이언트 .Net 똑같이 대단해. 닷넷 록스 TV 얼마 전에도 다루었습니다.
다른 팁
WPF 데이터 바인딩에 대해 제가 찾은 최고의 리소스는 다음과 같습니다. 비 코스타의 블로그.첫 번째 게시물부터 시작하여 앞으로 읽으십시오.그것은 굉장.
코드 숨김 - 목록 상자의 DataContext를 바인딩하려는 컬렉션과 동일하게 설정합니다.
private void OnInit(object sender, EventArgs e)
{
//myDataSet is some IEnumerable
// myListBox is a ListBox control.
// Set the DataContext of the ListBox to myDataSet
myListBox.DataContext = myDataSet;
}
XAML에서 Listbox는 "Binding" 구문을 사용하여 바인딩하는 속성을 선언할 수 있습니다.
<ListBox Name="myListBox" Height="200"
ItemsSource="{Binding Path=BookTable}"
ItemTemplate ="{StaticResource BookItemTemplate}"/>
위의 내용으로 충분하지 않은 경우를 대비해 몇 가지 추가 링크:
Windows Presentation Foundation - 데이터 바인딩 방법 항목
- MSDN의 'How To' 기사 약 30개.
"이 섹션의 항목에서는 데이터 바인딩을 사용하여 CLR(공용 언어 런타임) 개체 및 XML 형식으로 다양한 데이터 소스의 데이터에 요소를 바인딩하는 방법을 설명합니다."
한 번에 한 단계씩 WPF 데이터 바인딩을 향해 나아가기
- WPF 전문가 작성 조쉬 스미스
"이 문서에서는 WPF 데이터 바인딩의 기본 사항을 설명합니다.동일한 간단한 작업을 수행하는 네 가지 방법을 보여줍니다.각 반복은 가능한 가장 컴팩트한 XAML 전용 구현에 더 가까워집니다.이 문서는 WPF 데이터 바인딩 경험이 없는 사람들을 위한 것입니다."
MSDN의 또 다른 유용한 리소스는 다음과 같습니다. 데이터 바인딩 개요.
수행해야 할 세 가지 작업은 다음과 같습니다.
- ComboBox의 ItemsSource를 옵션 목록에 바인딩합니다.
- SelectedItem을 선택 항목이 포함된 속성에 바인딩합니다.
- ComboBox.ItemTemplate을 ComboBoxItem의 DataTemplate으로 설정합니다.
예를 들어 데이터 컨텍스트 개체가 이메일 주소를 가진 사람이고 기본을 선택하려는 경우 다음 서명이 있는 클래스가 있을 수 있습니다.
public class EmailAddress
{
public string AddressAsString { get; set; }
}
public class Person
{
public IEnumerable<EmailAddress> EmailAddresses { get; }
public EmailAddress MainEmailAddress { get; set; }
}
그런 다음 다음과 같은 콤보 상자를 만들 수 있습니다.
<ComboBox ItemsSource="{Binding EmailAddresses}" SelectedItem="{Binding MainEmailAddress}">
<ComboBox.ItemTemplate>
<DataTemplate>
<ComboBoxItem Content="{Binding AddressAsString}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
이제 Person과 EmailAddress 모두에서 INotifyPropertyChanged를 구현해야 합니다.EmailAddresses 컬렉션의 경우 ObjservableCollection을 사용하여 이를 백업할 수 있습니다.
또는 대안으로 사용할 수 있습니다 업데이트 제어 .NET.이는 데이터 바인딩을 대체하고 INotifyPropertyChanged가 필요하지 않은 오픈 소스 프로젝트입니다.EmailAddresses 속성을 뒷받침하는 데 적합한 컬렉션을 모두 사용할 수 있습니다.XAML은 UpdateControls.XAML 네임스페이스를 가져오고 {Binding ...}을 {u:Update ...}로 바꾸는 점을 제외하고 위와 동일하게 작동합니다.