StackPanel
또는 Grid
(가변 행 수로, 대신 StackPanel
을 고려해야 함) 중 하나에서 하위를 레이아웃하는 사용자 정의 구성 요소를 작성하고 싶습니다. 항목은 몇 가지 구성 (일부 레이블 및 텍스트 상자)을 표시하기 위해 몇 가지 컨트롤을 기반으로 일부 구성을 보유하는 사용자 지정 요소/개체입니다.사용자 정의 하위 요소가있는 ItemsControl
이상적으로는, 성분 (SpecializedCustomPanelItem
이 CustomPanelItem
의 하위 유형 임)과 같이 어떻게 든 사용해야합니다
<CustomPanel>
<CustomPanelItem Param1="value A" Param2="value B">Text</CustomPanelItem>
<CustomPanelItem Param1="value C">Other text</CustomPanelItem>
<SpecializedCustomPanelItem>More text</SpecializedCustomPanelItem>
<!-- The number of items is variable -->
</CustomPanel>
지금 잠시 동안 ItemsControl
에 읽은는, 그것은 오히려 잘 내 요구에 맞는 . 항목의 유형을 간단하게 만들고 ItemsControl
내부에서 사용할 수있는 데이터 템플릿을 만듭니다. 그럼 이미 벌금을 내야합니다.
그러나 ItemsControl
의 항목에 특정 유형 (예 : CustomPanelItem
또는 하위 유형)의 항목이 필요합니다. 실제로 ItemsControl
은 ComboBox
또는 MenuItem
과 같이 사용자를 허용하지만 실제로는 모든 하위 유형을 허용하고 필요한 경우 항목 컨테이너에 래핑하는 것으로 나타났습니다.
ItemsControl
이 실제로 내가 원하는 것일까 생각합니다. 대부분의 컨트롤이 구현하는 선택이나 스크롤 같은 "멋진"것들을 원하지 않기 때문입니다. 실제로는 해당 컴포넌트를 자동으로 생성하고 레이아웃을 Grid
/StackPanel
에 레이아웃하는 공통 패턴에 대한 간단한 인터페이스 만 빌드하려고합니다.
그래도 ItemsControl
을 사용해야하나요, 아니면 더 많은 맞춤 구성 요소를 만들어야합니까? 당신이 당신의 품목을 보유하고, 각 항목을 그리는 방법을 정의 할 ItemContainerTemplate
을 설정합니다 패널의 종류를 정의하는 ItemsPanelTemplate
있어 설정할 수 있습니다 ItemsControl
에 대한
뷰 모델에서 항목을 바인딩 할 예정입니까? 아니면 xaml에 정적으로 선언되어 있습니까? – NVM
그들은 정적으로 선언되지만 내용 (생성 된 텍스트 상자 안의 값)은 아마도 바인딩을 가져올 것입니다. – poke
그런 경우 컴파일 타임에 어떤 유형을 패널에 추가했는지 알 수 있습니다. 컴파일 타임에 괜찮 으면 런타임에 잘못 될 가능성이 없습니다. 이렇게 체크는 런타임 검사가 아닌 단위 테스트에 적합한 경우가 아닙니까? – NVM