2011-09-26 4 views
1

셋업 : 처음에 윈도우가로드 될 때 숨겨진 한 다음 특정 사용자 작업에 가시가의 GridView와크기 조정의 GridView 열 한 후에 그것을 볼 수

의 ListView.

목적 :

가의 GridView의 열 상대적으로 폭을 설정할 수 있습니다.

문제 :

내가 폭 (답 here 유사한)에 변환기를 사용하여 하나 달성 할 수 필요하거나 ListView에에 행동을 추가하여 (this solution 참조). 두 접근법 모두 유효하지만 처음부터 렌더링 된 컨트롤에 대해서만 유효합니다. 필자의 경우, 계산이 이루어지면 ActualWidth는 항상 0이며 ListView가 표시 될 때 이러한 계산이 반복되지 않습니다.

그래서 것 같아요, 여기에 실제 질문은 리스트 뷰의 ActualWidth가 0보다 큰

을이 솔루션은 바람직하게는 XAML에서 할 것 얻을 때 열 '폭이 다시 평가 될 받으시는 방법 코드 숨김을 포함하지 않은 수준이지만, 유일한 대안 인 경우에도 그렇게 할 것입니다 .-))

의견이 있으십니까?

P. 아래 Chris의 질문에 따라 ListView가 숨겨져 있거나 표시되는 방식에 대한 설명이 있습니다. Grid 컨트롤은 다른 컨테이너 컨트롤의 자식이며 Grid 열에서 호스팅되며 해당 열의 너비는 트리거에 의해 조작됩니다.

<ColumnDefinition> 
    <ColumnDefinition.Style> 
     <Style> 
      <Setter Property="ColumnDefinition.Width" Value="4*"/> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=OpenItems.Count}" Value="0"> 
        <Setter Property="ColumnDefinition.Width" Value="0"/> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </ColumnDefinition.Style> 
</ColumnDefinition> 

나는 (축소와 가시 사이의 가시성을 조작하는) 대신 ListView에의 컨테이너 자체에 유사한 트리거를 적용하려고했으나 그의 문제는 열이 원래 4 * 폭에서 축소하지 않는다는 것입니다 , 그래서 나는 그것이 숨겨져있을 때 (비어있는) 컨트롤을 보았습니다.

답변

0

ListView를 숨기거나 표시하는 방법은 무엇입니까? 이 질문은 Width 속성을 0 (또는 0이 아닌 값)으로 설정하여 그렇게하고 있음을 나타냅니다. 대신 Visibility 속성을 사용 해봐야합니다 (숨기려면 '축소', 표시하려면 '공개'로 설정). 이렇게하면 열 너비가 다시 계산됩니다.

UPDATE

: http://www.codeproject.com/KB/grid/ListView_layout_manager.aspx

내가 FWIW 여기에서 그것을 가지고 : 업데이트 된 질문을 바탕으로

, 나는이 솔루션을 체크 아웃 좋을 것

WPF : Extend last column of ListView's GridView

+0

크리스, 좀 더 함께 원래의 질문을 업데이트 세부. 이 상황이 더 많은 빛을 발산했으면 좋겠다. – Alex

관련 문제