특정 인터페이스를 구현하는 데이터 항목 컬렉션에 대한 바인딩을 지원하는 WPF 컨트롤을 구현하려는 경우 해당 템플릿도 템플릿을 지원하고 인터페이스에 표시되는 속성에 따라 정렬합니다. 그것은 일반적으로 받아 들일만한 관행인가? 그리고 어떤 전략을 사용하는 것이 더 낫습니다.컬렉션에 바인딩 된 WPF 컨트롤
감사합니다.
특정 인터페이스를 구현하는 데이터 항목 컬렉션에 대한 바인딩을 지원하는 WPF 컨트롤을 구현하려는 경우 해당 템플릿도 템플릿을 지원하고 인터페이스에 표시되는 속성에 따라 정렬합니다. 그것은 일반적으로 받아 들일만한 관행인가? 그리고 어떤 전략을 사용하는 것이 더 낫습니다.컬렉션에 바인딩 된 WPF 컨트롤
감사합니다.
제공하신 정보가 너무 광범위하므로 기본 정보 만 다루려고합니다.
예, WPF는 컬렉션에 바인딩 컨트롤을 지원합니다. IEnumerable
을 구현하는 컬렉션에 바인딩 할 수 있습니다. 즉, List<T>
을 포함하여 .NET에서 사용할 수있는 대부분의 컬렉션 유형에 바인딩 할 수 있습니다.
활성 바인딩을 사용하려는 경우, 즉 기본 컬렉션에서 항목을 추가하거나 제거 할 때 컨트롤이 자체적으로 업데이트되어야하므로 컬렉션에 변경 알림을 구현해야합니다. 이 목적으로 INotifyPropertyChanged
을 구현하거나 간단히 ObservableCollection<T>
을 사용할 수 있습니다.
프런트 엔드에서는 항목을 선택할 수 있도록하려면 ListBox
을 사용하고 그렇지 않으면 ItemsControl
을 사용할 수 있습니다.
기본 데이터 형식에 대해 DataTemplate
을 만들고 컨트롤 내에서 항목이 올바르게 보이게하려면 ItemsControl.ItemTemplate
또는 ListBox.ItemTemplate
에 할당해야합니다.
즉석에서 항목 속성을 업데이트하고 이에 따라 ItemsControl 또는 ListBox에서 해당 항목을 적절하게 업데이트하려면 데이터 형식이 자체 수준에서 변경 알림을 구현해야합니다. INotifyPropertyChanged
을 구현하거나(MVVM Light를 사용하는 경우)에서 클래스를 파생시킬 수 있습니다.
, 당신은 WPF에서 사용할 수있는 패널 하나에 ItemsControl.ItemsPanel
를 설정할 수 있습니다, 같은 StackPanel
, WrapPanel
또는 Canvas
등
일반적으로 인정 된 연습 항목 ItemsControl
내에 배치되는 방식을 변경하려면로 프로젝트를 분할하는 것입니다 (최소한 두 개의 레이어 (또는 Visual Studio의 관점에서 프로젝트); 데이터 및 작업의 비즈니스 논리 및 추상 저장을 처리하는 ViewModel의 기본 내용은 입니다. 이 ViewModel은 알지 못하므로 UI와 독립적입니다. 클래스 및 컬렉션에 대한 변경 알림을 구현하고 UI 컨트롤이 바인딩 할 공개 속성을 노출하는 것이 여기 있습니다. 그런 다음 뷰 모델 층의 상단에, 당신은 뷰 모델 층에 대해 알고있는 보기 계층을 생성 (당신은보기 프로젝트의 뷰 모델 프로젝트의 참조를 추가) 다음 뷰 모델 객체로 컨트롤의 DataContext
을 설정하고 그 특성을 결합 ViewModel 객체의 노출 된 속성
이 당신이 발견하고 당신이 WPF를 배울 이해할 필요가 있다는 바인딩에 관련된 세부 사항의 엄청난 금액이지만, I 등이 수행해야하는 행동의 아주 기본적인 라인 말했다.
답장을 보내 주셔서 감사합니다. 나는 현재 패널로 캔버스와 ItemsControl에의 사용을 고려하고있어, 나를 위해 주요 문제는 이러한 요소에 바인딩 된 데이터에 따라 캔버스 내부의 요소를 배열하는 방법이다. – user3060586
Canvas에 가능한 삽입을 연결하여 요소의 DataContext를 추가로 확보하고 그에 따라 위치를 지정할 수 있습니까? – user3060586
아니면이 용도로 맞춤 패널을 구현해야합니까? – user3060586