2011-11-09 3 views
1

현재 1에서 9 개의 사용자 컨트롤을 표시 할 필요가있는 창을 포함하는 프로젝트에서 작업하고 있습니다.wpf 지능형 그리드 레이아웃

사용 가능한 전체 공간이 선택한 사용자 컨트롤 수에 따라 사용되도록하는 가장 좋은 방법을 찾고 있습니다.

9 개의 항목이 선택되면 3 x 3의 격자가 표시됩니다. 그러나 8을 선택하면 3의 2 행이 아래에 2 행으로 표시됩니다. (colspan 사용).

나는 원하는 동작의 대부분이 이미 존재하는 것처럼 보이는 것처럼 uniform 그리드를 사용하려고 노력 해왔다. (추가 된 주문 항목이 표시되고 자동으로 창 크기로 조정됩니다). 그러나 선택한 항목의 수가 3로 나눌 수없는 경우 지능형을 구현하는 데 어려움을 겪고 있습니다!

이전에이 문제가 발생 했습니까? 아니면 문제를 해결할 수있는 적절한 방법을 제안 할 수 있습니까?

감사합니다.

답변

1

WrapPanel을 사용하고 각 개체의 Width을 랩 패널의 크기의 1/3로 설정해보십시오. 첫 번째 행이 세 가지 항목 만 마지막 두 항목이 수평으로 남아있는 공간으로 뻗어되지 않은 두 행을 준다

+0

랩 패널을 사용하고 오브젝트의 너비를 랩 패널 크기의 1/3로 설정합니다. 마지막 항목 너비를 계산하려면 아이템 수에 대한 mod를 확인해야합니다. 감사. – seanzi

+0

결국 저는 랩 패널을 사용하는 솔루션을 제안했습니다. 매번 항목이 패널에 추가됩니다. 각 행의 행 수와 컨트롤 수를 계산하고 각 항목의 높이와 너비를 패널 높이와 너비의 일부분으로 설정합니다. – seanzi

+0

@Rachel UniformGrid는 사용자가 설명한 것과 동일한 작업을 수행하지만 하드 코딩 된 값 (XAML을 통해)이나 코드가 전혀 필요 없기 때문에 더욱 유연하다고 생각합니다. 열 수를 설정하면 너비가 자동으로 계산됩니다. – Dave

0

균일 한 격자로 고정하십시오. 당신은 3 열을 원하는 것처럼 소리 때문에 관계없이 표시 컨트롤의 수, 당신은 사용해야합니다 :

<UniformGrid Columns="3" /> 

을 그리고 그것은 당신이 부탁 한 일을 할 것입니다 - 당신이 8 개 컨트롤이있는 경우 ' 아래에 2x3 + 2가 추가됩니다.

+0

을 채우고 때

자동으로 새 행 항목을 이동합니다. 이렇게하면 피하려고하는 항목에 빈 공간이 생깁니다. 감사합니다 – seanzi

+0

@ 53AN 아, 죄송합니다, 나는 당신이 마지막 두 사람이 그렇게 늘어나기를 원한다는 것을 몰랐습니다. – Dave