2012-06-08 4 views
3

내가 15 ~ 20 개 행이, 그들 중 일부는 다른 있지만 대부분은 유사하다 :RowDefinition 중복을 피하는 방법은 무엇입니까?

 <RowDefinition Height="Auto" /> 

그리고 하나씩 간다 약 10 행, 때문에 나는, 코드 중복을 피하고자합니다. 어떻게 할 수 있습니까?

XAML없이 코드에서 수행 할 수 있지만이 문제를 해결하는 것은 잘못된 방법이라고 생각합니다.

답변

1

그리드 행의 표현을 어떻게 든 단축 할 수는 없지만, 특히 모두가 Height 속성을 "Auto"로 설정하지 않은 경우에는 특히 그렇습니다. 첨부 된 종속성 속성을 사용하여 시도해 볼 수 있습니다. here.

이 예제에서는 눈금 행 수를 지정하고 각 행의 Height 속성을 프로그래밍 방식으로 설정하는 것을 볼 수 있습니다. 더 복잡한 방법으로 각 행에 어떤 높이를 할당할지 결정해야 할 수도 있습니다. 이 솔루션은 XAML에서보다 미적인 것으로 입증 될 수도 있지만 구현하기가 더 복잡 할 수 있으며 각 행에 대해 적절한 높이를 지정하는 데 어려움이있을 수 있습니다. 개인적으로 Visual Studio에서 태그를 접을 수 있고 좋고 분명한 측면을 허용하기 때문에 각 행을 선언하는 것이 더 쉽습니다.

도움이 되었기를 바랍니다.

0

간단히 쉼표로 구분 된 목록을 기반으로 행과 열을 자동으로 정의하는 첨부 된 속성을 제공하는 클래스를 작성하여이 문제를 해결했습니다. 당신이 기본적으로해야 할 것은 (내가 AutoRows을 불러 재산 변경된 메타 데이터를위한 방법을 정의한다. 그 방법은 새로운 RowDefinition 요소 값을 구문 분석하고 간단하게 만드는 연결된 속성을 만드는 것입니다.

는 어디서 각 간단한 구문을 사용 값은 하나의 행과 같습니다. 따라서 20,20,20은 높이가 20 인 행을 3 개 생성하고, 높이가 auto 인 행을 허용하고 공간을 절약하기 위해 블록에 여러 자동 행을 정의하는 새로운 형식을 추가했습니다. 예를 들어 20,~5,20은 높이가 20 인 행을 정의한 다음 자동 행이 5 개이고 높이가 20 인 행을 정의합니다.

내 C hange 핸들러는 기본적으로 다음을 수행합니다.

올바르게 구문 분석되고 아무 것도 실패하지 않도록 몇 줄을 생략했습니다. 보시다시피, GridLengthConverter을 사용하여 각각의 비 자동 값이 보통 RowDefinition이 지원하는 값을 허용하도록합니다. 따라서 모든 행 높이를 쉼표로 쉽게 결합 할 수 있으며이를 연결된 속성의 값으로 사용할 수 있습니다.

관련 문제