0

私が作成した WPF アプリケーションには、3 行のグリッドが含まれています。3行目にボタンのセットがあります。ボタンをクリックすると、フォームがグリッドの 2 行目に表示されます。ただし、すべてのフォーム コンテンツを同じウィンドウで作成し、可視性を非表示に設定しているため、私が行ったことは非常に面倒です。

サンプルコード:

<Grid Name="panel1" Grid.Row="1" Visibility="Hidden">
 //contains a lot of textblocks,buttons and images
</Grid>
<Grid Name="panel2" Grid.Row="1" Visibility="Hidden">
 //contains a lot of textblocks,buttons and images
</Grid>
 <Grid Name="panel3" Grid.Row="1" Visibility="Hidden">
 //contains a lot of textblocks,buttons and images
</Grid>

私のxamlコードは次のようになります:

private void Image_MouseLeftButtonDown_1(object sender, System.Windows.Input.MouseButtonEventArgs e)
    {
        panel1.Visibility = System.Windows.Visibility.Hidden;
        panel2.Visibility = System.Windows.Visibility.Visible;
        panel3.Visibility = System.Windows.Visibility.Hidden;
    }

メイン Xaml ファイルにすべてのコードを含めたので、このアプローチは非常に面倒に見えます。これを行うには、いくつかの代替方法が必要です。親切に助けてください。

4

2 に答える 2

1

このようなメソッドを作成します

private void VisibilityManager(Grid grd)
{
    new List<Grid>(){ panel1, panel2, panel3}
       .ForEach(x => x.Visibility = Visibility.Hidden);
    grd.Visibility = Visibility.Visible;
}

そしてそれをこのように呼びます

VisibilityManager(panel1);

panel1 を表示し、他のすべてを非表示にします。

将来、グリッドを増やす必要がある場合は、このメソッド内で変更を加えてください。

于 2012-08-09T06:41:09.947 に答える
0

タブコントロールのスタイルを設定してタブを切り替えたり、コンテンツコントロールを使用して表示したいコンテンツへのバインディングを作成したりできます。また、データ バインディングを使用して (表示する内容によって異なります)、テンプレート セレクターを使用することもできます。この問題を解決する方法はたくさんあります。コンテンツがどのように見えるかもう少し教えてください

于 2012-08-09T06:42:51.400 に答える