문제

누구든지 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의 또 다른 유용한 리소스는 다음과 같습니다. 데이터 바인딩 개요.

수행해야 할 세 가지 작업은 다음과 같습니다.

  1. ComboBox의 ItemsSource를 옵션 목록에 바인딩합니다.
  2. SelectedItem을 선택 항목이 포함된 속성에 바인딩합니다.
  3. 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 ...}로 바꾸는 점을 제외하고 위와 동일하게 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top