2012-06-28 4 views
0

초보자 인 WPF/XAML에서 레이아웃과 씨름 해 왔고 일관되게하려고 노력했습니다. 다른 열에 다른 데이터가있는 표 목록 상자를 사용하고 있습니다. 내가 원하는 동작을 말로 시작합니다 : 내가 생각 열, 유니폼, 시작과 끝 위치는 ColumnDefinition들에 * 기반 Width의를 사용하여 달성 할 수있다.설명되지 않은 격자 레이아웃 폭 동작

그리고 하단의 GitHub 링크에서 가장 최근의 차이점 인 더미 데이터와 함께 열은 다양한 문자열 길이로 균일합니다. 그러나 어떤 이유에서든 DirectorySizer에서 가져온 실제 데이터를 사용하면 uniformity가 창 밖으로 나옵니다. 여기서 두 번째 열은 길이가 DirPath 인 다른 위치에서 시작됩니다. 내가 생각할 수있는 유일한 것은 데이터가 어떻게 든 열보다 길었다는 것인데, 이는 그럴 것 같지 않습니다 (메모리에있는 검사가 적절하게 다듬어 진 상태에서 DirPath).

이에 대한 모든 솔루션/설명? 나는 잃어 버렸다.

Diff between desired and undesired behavior

답변

2

당신은 당신의 목록 상자에 Grid.IsSharedSizeScope를 사용하여 조사한다. 이것을 사용하면 모든 그리드가 columnDefinition의 "SharedSizeGroup"속성을 기반으로 동일한 열 크기를 공유하게 할 수 있습니다. 나는 이것이 철저한 설명이 아니라는 것을 알고있다. Grid.IsSharedSizeScope에 구글을 올려 놓고 필요한 것을 찾는다.

다른 동작은 사용중인 데이터 소스의 다른 구조로 설명 할 수 있습니다. 정확히 동일한 값이 각 열에 바인딩되는 문자열 배열을 수행하는 대신 두 개의 다른 문자열 값을 가진 클래스를 설정하고 바인딩하십시오. 그것은 당신의 DirectorySizer 객체

+0

, 감사 –

0

에 더 유효을 비교 한 될 것입니다 그런 식으로 분명히 뭔가에 대한 INotifyPropertyChanged 구타 갈 수있는 레이아웃을 발생합니다. Notify()가 발생하고 새로운 콘텐츠가 표시되면 레이아웃 시스템은 단순히 내용이 다른 크기의 경우 변형 정렬을 일으키는 원인이되는 내용과 그리드 선 사이의 패딩을 유지합니다.

나는 SharedSizeScope으로 살펴 보겠습니다