0

私のWindows8c#/ xamlアプリには、コンテンツを含む3つの大きなグリッドがあります。それぞれが画面に正確に表示されます。このシステムは、ユーザーが私のアプリをスナップするまで、私の目的には非常にうまく機能します。

では、グリッド定義を完全に変更したり、他の「スナップされた」グリッドのすべてのテキストボックス、ボタン、リストビューをプルしたりすることは可能ですか?最後の1つは単なるアイデアです。

private void pageRoot_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        if (ApplicationView.Value == ApplicationViewState.Snapped)
        {
            ????
        }
        else
        {
            Grid1.Width = Windows.UI.Xaml.Window.Current.Bounds.Width;
            Grid2.Width = Windows.UI.Xaml.Window.Current.Bounds.Width;
            Grid3.Width = Windows.UI.Xaml.Window.Current.Bounds.Width;
        }

    }
4

2 に答える 2

1

これは、MVVMが非常に便利になるシナリオです。スナップ、フルスクリーン、フルスクリーンにそれぞれ1つずつ、2つの別々のビューを作成することで、それらを比較的簡単に切り替えることができます。

もう1つのオプションは、新しいFlipViewコントロールを使用することです。この良い例は、Windows 8 Dev Camp inaBoxにあるContosoCookbookサンプルアプリにあります。

http://bit.ly/win8RCdevcamp

Contosoハンズオンラボのサンプルコードは次のとおりです。

<FlipView.ItemTemplate>
    <DataTemplate>
        <UserControl Loaded="StartLayoutUpdates" Unloaded="StopLayoutUpdates">
            <ScrollViewer x:Name="scrollViewer" Style="{StaticResource VerticalScrollViewerStyle}" Grid.Row="1">

                <!-- Vertical StackPanel for item-detail layout -->
                <StackPanel Orientation="Vertical" Margin="20,0,20,0">
                    <StackPanel Orientation="Vertical">
                        <TextBlock FontSize="20" FontWeight="Light" Text="{Binding Title}" TextWrapping="Wrap"/>
                        <Image x:Name="image" Width="260" Margin="0,12,0,40" Stretch="Uniform" Source="{Binding Image}" HorizontalAlignment="Left"/>
                    </StackPanel>
                    <StackPanel Orientation="Vertical">
                        <TextBlock FontSize="20" FontWeight="Light" Text="Ingredients" Margin="0,0,0,16"/>
                        <TextBlock FontSize="16" FontWeight="Light" TextWrapping="Wrap" Text="{Binding Ingredients, Converter={StaticResource ListConverter}}" />
                    </StackPanel>
                </StackPanel>
            </ScrollViewer>
        </UserControl>
    </DataTemplate>
</FlipView.ItemTemplate>

ご覧のとおり、FlipViewごとに、異なる表示状態が参照されます。状況をより具体的に確認するために、そのハンズオンラボを確認することをお勧めします。または、FlipViewコントロールのHTMLとXAMLの両方の例を含むこの他のサンプル:http: //code.msdn.microsoft.com/windowsapps/ FlipView-control-sample-18e434b4

于 2012-08-25T11:59:54.257 に答える
0

あなたのシナリオでは、スナップの変更を検出したときに別のページに移動し、複雑なページのレイアウトを動的に更新しようとするのではなく、スナップが最適化されたエクスペリエンスを持つページをロードします。

于 2012-08-24T17:22:16.423 に答える