28

私の問題は次のとおりです。WPF グリッド列の表示を切り替える方法がわかりません。次の XAML マークアップを想定します。

<Grid x:Name="myGrid">
    <Grid.RowDefinitions>
        <RowDefinition x:Name="Row1" />
        <RowDefinition x:Name="Row2" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="Column1" />
        <ColumnDefinition x:Name="Column2" />
    </Grid.ColumnDefinitions>
</Grid>

グリッドがいくつかのコントロールなどで埋められた後、C# コードから単一の列を動的に非表示にしたいと考えています。列の定義幅をゼロに設定することで、これを達成しようとしましたColumn1.Width = 0。これは機能しますが、私はこの解決策があまり好きではありません - 本当に良い方法はありませんか?

myGrid.Columns[0].Visibility = COLLAPSEDまたはのようなものを探していColumn1.Visibility = HIDDENます。私はそのようなものを見つけることができません - 何かアイデアはありますか?

4

5 に答える 5

14

これを行う最も簡単な方法は、Grid非表示にする関連する列の最上位コントロールとして名前付きを追加することです。次に、他のコントロールと同じように、それとそのすべてのコンテンツを非表示にすることができます:

XAML の場合:

<Grid x:Name="myGrid">
    <Grid.RowDefinitions>
        <RowDefinition x:Name="Row1" />
        <RowDefinition x:Name="Row2" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="Column1" />
        <ColumnDefinition x:Name="Column2" />
    </Grid.ColumnDefinitions>
    <Grid x:Name="GridColumn1" Grid.Column="1">
        ...
    </Grid>
</Grid>

次に、コードビハインドで:

GridColumn1.Visibility = Visibility.Collapsed;

に複数の行がGridあるため、次のように並べ替えることができます。

<Grid x:Name="myGrid">
    <Grid.ColumnDefinitions>
        <ColumnDefinition x:Name="Column1" />
        <ColumnDefinition x:Name="Column2" />
    </Grid.ColumnDefinitions>
    <Grid x:Name="GridColumn0" Grid.Column="0">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
    </Grid>
    <Grid x:Name="GridColumn1" Grid.Column="1">
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
    </Grid>
</Grid>

更新 >>>

このようにメインを再配置する必要はありませんGrid...関連する列の各行に 1 つずつ、2 つのコントロールを簡単に追加して、両方を一緒に設定することもできます。GridVisibility

InnerGrid1.Visibility = InnerGrid2.Visibility = Visibility.Collapsed;

Gridメインの各セルに を追加しGridて、一度に表示されるセルを完全に制御することもできます。

于 2013-10-07T14:16:04.537 に答える
7

Code Project のWPF Grid Column and Row Hidingでは、依存関係プロパティを使用する方法を示しています。彼らは を設定Visible = falseしますが、内部的には を設定しますWidth = 0

別のアイデアは、コード ビハインドで列定義を削除することです...しかし、それはさらに悪いハックだと思います! :(

于 2013-10-07T14:19:08.237 に答える
3

醜いハックは、幅を 0 に変更することです (見えない、気にしない)。

これを行うべきではない理由はたくさんありますが、状況によっては、それで十分な場合があります。

于 2013-10-07T14:36:17.327 に答える
-10

以下を使用してグリッドを非表示にします。同様に、Name プロパティを使用して、行の定義と列の定義を非表示にすることができます。

myGrid.Visibility = System.Windows.Visibility.Hidden;

于 2014-03-17T09:58:38.470 に答える