2011-03-02 5 views
0

모든 어린이들 사이에 간격을 삽입하는 맞춤 패널을 만들고 싶습니다. Panel에서 상속받는 것은 매우 복잡하고 불필요한 것처럼 보였습니다. 내가 원하는 것은 StackPanel에 가깝기 때문에 StackPanel에서 상속 받아 ArrangeOverride와 MeasureOverride를 수정하여 원하는 것을 얻을 수 있다고 생각했습니다. Reflector에서 이러한 구현을 얻었지만 즉시 상속 된 클래스, 즉 IsScrolling (및 _scrollData 필드)에서 한 속성에 액세스 할 수 없다는 사실을 알게되었습니다. 내 질문은 내가 이것을 건너 뛸 수 또는 동일한 동작을 구현하는 다른 방법이 있다면? 이 사용자 정의 패널에 대한 스크롤이 필요할지 모르겠지만 언젠가는 할 수 있으며 구석에 페인트하려고하지 않습니다.사용자 정의 StackPanel의 WPF : ArrangeOverride

답변

0

원하는 경우 컨테이너 안의 모든 요소에 자동으로 여백이 포함됩니다 정의, 당신은 많이 더 나은 단지 그 기능을 구현하는 사용자 정의 동작을 만드는거야.

사용자 지정 동작을 만들려면 Behavior<Panel>을 구현하기 만하면됩니다. 그것은 오히려 자명하지만, 당신이 어떻게 물었는지 모르겠다면.

+0

여백을 사용하지 않고 자식 사이에 공백을 추가하고 싶습니다. 다른 여백도 사용할 수 있어야합니다. 일부 규칙에 따라 자식을 도킹/채우기 위해 채우기 속성을 지정할 수 있기를 원합니다. 더 큰 공간을 가진 아이들의 그룹을 구분하기 위해 그룹화 속성을 추가하고 싶습니다.이 모든 것을 행동으로 할 수 있습니까? 맞춤 패널이 더 적절하다고 보십니까? –

+0

이 경우 네, 사용자 정의 패널을 사용할 수 있습니다. 귀하의 질문에 관해서는 - 이것이 ScrollViewer 통합을 처리하는 데 사용되는 IScrollInfo 인프라의 일부라고 생각합니다. 스크롤 할 때 사용자 지정 동작이 필요하지 않으면 무시할 수 있다고 생각합니다. –

+0

두 번째 엘라 드가 필요합니다. 사용자 정의 패널 경로를 지정해야하는 문자열이 필요합니다. 기존 기능에 의존하는 것이 좋습니다. 필자는 Fill 사용으로 인해 Dock 패널을 주요 UI 요소로 사용하는 것이 더 적절하다고 제안합니다. 요소 여백을 엉망으로 만들고 싶지 않으면 'spacer'요소를 포함하여 여백을 지정할 수 있습니다. 스택 패널을 자식으로 사용하여 그룹화 할 수 있습니다. 이미지를 보내 주시면 감사하겠습니다. –

관련 문제