1

1行と2列があるとしましょう。どちらもビデオ ストリームを持っており、サイズが自動的に変更されて可能な限り表示されるため、どちらも画面の半分を占めます。

1 つのストリームを削除して、2 つ目のストリームを画面全体に表示できるようにしたいと考えています。したがって、基本的には、最初のセルを「押し戻す」ために何も占有していないため、2 番目のセルを押して画面全体を埋めます。

セルを削除することでこれを実行できることはわかっていますが、説明していることを達成するための設定があれば、何倍もクリーンでシンプルで簡単になります。

編集:

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

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

それぞれ 1 つだけから始めて、次のようにしてそこから動的に拡張します。

                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;
                }
4

2 に答える 2

2

とコンテナー コントロール (ビュー ストリーム コントロール自体またはそのコンテナー)WidthGridViewColumnをに設定してみてください。0VisibilityCollapsed

編集
a のUniformGrid方が作業しやすいかもしれませんが。次に、コントロールの可視性を折りたたむように設定するだけで済みます (これにより、幅の計算からそのコントロールが削除されます)。

UniformGrid のRowsプロパティをに設定1して、すべてを 1 行に収めることをお勧めします (そうしないと、行と列を交互に追加するプロセスが開始されます)。

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

インスピレーションのために上記のコードを使用してください。最初のビデオ ストリーム コントロールは、使用しているコントロールが可視性プロパティを公開していない場合に可視性プロパティを「追加」する方法を示すために、グリッドにラップされています。これは完全にオプションです。

于 2012-10-25T14:09:09.003 に答える
0

別の解決策は、両方のビデオストリームをグリッド内の単一のStackPanelにラップすることです。次に、ビデオコントロールの[表示]を[折りたたみ]に設定すると、探している機能が提供されます。

ただし、StackPanelsは、幅と高さが無限であるため、WPFの「自動サイズ設定」の魔法のかなりの部分を削除しますが、状況によっては簡単な解決策です。

于 2012-10-25T14:23:28.400 に答える