2012-10-25 41 views
1

比方說,我有1行2列。兩者都有一個視頻流,它會自動調整大小以滿足它的需求,因此它們都佔用了一半的屏幕。自動調整單元格大小以填充屏幕而不移除單元格

我希望能夠刪除一個流,並有第二個填充整個屏幕。所以基本上,第二個單元格會填充整個屏幕,因爲沒有任何東西佔用第一個單元格來「推回」它。

我知道我可以通過刪除單元格來完成這項工作,但如果有一些設置可以完成我所描述的操作,它會更簡潔,更簡單,更容易。

編輯:

<Grid.RowDefinitions> 
     <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 

    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
    </Grid.ColumnDefinitions> 

我開始只有每一個從那裏做動態擴展:

   if (grd.ColumnDefinitions.Count == grd.RowDefinitions.Count) 
       { 
        System.Windows.Controls.ColumnDefinition newColumn; 
        newColumn = new System.Windows.Controls.ColumnDefinition(); 
        grd.ColumnDefinitions.Add(newColumn); 
        Column = grd.ColumnDefinitions.Count - 1; 
        Row = 0; 
       } 
       else 
       { 
        System.Windows.Controls.RowDefinition newRow; 
        newRow = new System.Windows.Controls.RowDefinition(); 
        grd.RowDefinitions.Add(newRow); 
        Row = grd.RowDefinitions.Count - 1; 
        Column = 0; 
       } 
+0

你能分享你的列/行在XAML中的定義方式嗎? – Joe

+0

您必須在您的XAML代碼前面添加四個空格,否則,stackoverflow會將其解釋爲HTML文字並嘗試渲染或丟棄它。 – JDB

回答

2

嘗試將GridViewColumn0Width和容器的Visibility控制(視圖流控制本身或其容器)至Collapsed

編輯
雖然UniformGrid可能會更容易使用。然後,您只需將控件的可見性設置爲摺疊(這將從寬度計算中刪除該控件)。

我建議將UniformGrid的Rows屬性設置爲1將所有內容保留在一行上(否則它將開始交替添加行和列的過程)。

<UniformGrid Rows="1"> 
    <Grid Visibility="{Binding IsVideo1Visible, Converter={BooleanToVisibilityConverter}}"> 
     <abc:VideoStream> 
    </Grid> 
    <abc:VideoStream Visibility="{Binding IsVideo2Visible, Converter={BooleanToVisibilityConverter}}"> 
</UniformGrid> 

使用上述代碼獲取靈感。第一個視頻流控件包裝在一個網格中,只是爲了演示如果您正在使用的控件不公開一個可見性屬性,您將如何「添加」可見性屬性。它是完全可選的。

+1

有了適當的行/列XAML標記,不會columnWidth時縮小到0時自動容器控件的可見性設置爲摺疊? – Joe

+0

@JonathanPiché - 不一定。如果寬度設置爲「*」,那麼該列仍將佔用空間,即使它不包含任何內容。我已經將這種技術用於我的一些佈局。 – JDB

+0

在這種情況下,將ColumnWidth設置爲「Auto」而不是「*」應該可以實現。 – Joe

0

另一種解決方案是將兩個視頻流封裝到網格中的單個StackPanel中。然後,將視頻控件的「可見性」設置爲「摺疊」將提供您正在查找的功能。

然而StackPanels做刪除的WPF的「自動調整大小」魔塊好,因爲他們有無限的寬度和高度,但在某些情況下,它是一個簡單的解決方案。

+0

如同OP所說,堆疊面板會使每個視頻流完全填滿屏幕的一半是非常困難的。 (並且當另一個隱藏時,視頻流不會擴展爲填滿屏幕。) – JDB

相關問題