"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > WPF Combobox를 사용자 정의 목록에 바인딩하는 방법은 무엇입니까?

WPF Combobox를 사용자 정의 목록에 바인딩하는 방법은 무엇입니까?

2025-02-06에 게시되었습니다
검색:119

How to Bind a WPF ComboBox to a Custom List?

WPF에서 CommoBox를 사용자 정의 목록에 바인드

WPF의 ComboBox 컨트롤은 사용자 정의 객체 목록에서 값을 표시하고 선택하는 기능을 포함하여 유연한 데이터 바인딩 옵션을 제공합니다. 이 안내서는 WPF에서 Combobox를 사용자 정의 목록에 바인딩하는 방법을 살펴보고 일반적인 문제를 해결합니다.

사용자 정의 목록에 바인딩

Combobox를 사용자 정의 목록에 바인딩하려면 목록 데이터 구조를 나타내는 클래스가 필요합니다. 예를 들어, 전화 번호부 항목 목록이있는 경우 이름 및 번호와 같은 속성이 포함 된 전화 번호부 클래스를 정의 할 수 있습니다.

다음, PhoneBookEntry 객체 모음을 노출시키는 ConnectionViewModel을 만듭니다. 이보기 모델은 Combobox의 데이터 소스 역할을합니다.

XAML에서 ComboBox의 항목 소스 속성을 View 모델의 PhoneBookEntries 속성에 바인딩하십시오. 또한 DROPINGPATH 속성을 설정하여 드롭 다운 목록에 표시되어야하는 속성을 지정하여 선택한 ValuePath 속성을 지정하여 선택한 값 속성을 설정하기 위해 항목을 선택할 때 사용해야 할 속성을 표시합니다.

데이터 흐름 및 바인딩 방향

바인딩은 기본적으로 양방향이므로 UI ​​또는 뷰 모델의 변경이 양쪽으로 전파 될 수 있습니다. 그러나 경우에 따라 UI에서 변경 사항이 발생할 때보기 모델을 업데이트하려는 경우 일원 바인딩을 지정할 수 있습니다.

올바른 컨텍스트를 확인하십시오

ComboBox의 DataContext는 사용자 정의 목록을 제공하는 ConnectionViewModel 인스턴스 여야합니다. DataContext가 명시 적으로 설정되지 않으면 WPF는 주변 요소 및 바인딩 계층에 따라 추론하려고합니다.

DataContext

의 암시 적 상속을 이해합니다.

itemscontrol 또는 itemspanel을 통해 combobox에 항목을 추가 할 때 기본적으로 부모 요소의 데이터 콘텍스트를 상속합니다. 이는 ItemsControl 내의 ComboBox 내의 각 항목의 데이터 컨텍스트가 Itemscontrol 자체의 데이터 콘텍스트와 동일하다는 것을 의미합니다.

CollectionView 문제 해결

ConnectionViewModel의 PhoneBookEntries 속성이 CollectionView 인 경우 양방향 바인딩 문제가 발생할 수 있습니다. 이를 해결하려면 속성 유형을 ReadonLyCollection으로 변경하거나 사용자 정의 ICOLLECTIONVIEW 파생 클래스를 구현하는 것을 고려하십시오.

displayMemberPath

에 대한 대체 방법

경우에 따라 DisplayMemberPath 대신 사용자 정의 클래스의 ToString () 메소드를 사용하는 것이 좋습니다. 이를 통해 드롭 다운 목록에 표시된 텍스트를 더 잘 제어하면 선택한 값을 저장하기 위해 선택한 값 속성을 사용합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3