2011-09-26 93 views
1

的設置:調整大小的GridView列之可見

的ListView與被加載的窗口時最初被隱藏,並且然後在特定用戶動作可見的GridView。

目的:

可以設置GridView的列的相對寬度。

問題:

我需要可以通過使用在寬度(類似於答案here東西)轉換器來實現,或者通過在ListView控件添加行爲(見this solution)。 這兩種方法似乎都是有效的 - 但僅限於從早期開始渲染的控件。 在我的情況下,當進行計算時,ActualWidth始終爲0,並且在ListView變爲可見時不會重複這些計算。

所以,我想,這裏的真正問題是如何獲得列的寬度進行重新評估的時候ListView控件的ActualWidth獲取大於0

該解決方案將最好的XAML級別,而不涉及代碼隱藏 - 但也會這樣做,如果這是唯一的選擇;-)

有什麼建議嗎?

P.S.以下是Chris的問題,下面是關於如何隱藏/顯示ListView的說明:它是另一個容器控件的子元素,託管在網格列中,該列的寬度由觸發器控制。

<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(或者非零來顯示它)來做到這一點。相反,您應該嘗試使用Visibility屬性(設置爲「摺疊」隱藏或「可見」顯示)。這應該會導致列的寬度被重新評估。

UPDATE:

基於更新後的問題,我建議你檢查出這個解決方案:http://www.codeproject.com/KB/grid/ListView_layout_manager.aspx

我從這裏FWIW得到它:WPF : Extend last column of ListView's GridView

+0

克里斯,我有更多更新的原題細節。 希望這可以揭示更多的情況...... – Alex