3

この問題の反対があります: GridViewアイテムの動的なサイズを設定するにはどうすればよいですか?

2行4列のGridViewがあります。望ましい動作は、GridViewItemsがセルを埋めることですが、これを行う方法がわかりません。GridViewItemは、DataTemplateとして持っている他のコンテンツを含むグリッドです。アイテムの幅と高さを指定できますが、これは1つの解像度でのみ機能し、アイテムは動的で比例している必要があるため、別のデバイスに表示された場合、引き続き4つのアイテムの2行になります。

別のページに、同じレイアウトの静的グリッドがあり、各セルに長方形が含まれています。これらは自動的に引き伸ばされ、RectangleのSizeChangedで取得するDependencyPropertiesに幅と高さを保存しようとしましたが、バインドする方法がわかりません。

ページXAMLは次のとおりです。

                    <Grid x:Name="Pane2LayoutGrid" 
                    Grid.Column="1">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="90"/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>

                    <TextBlock x:Name="TitleText" Text="Favorites" Style="{StaticResource TitleBarHeader}"/>

                    <GridView x:Name="GridView" 
                        Grid.Row="1" 
                        Margin="0,10,0,8" 
                        Style="{StaticResource GridView}" 
                        ItemsSource="{Binding Items, Source={StaticResource vm}}" 
                        />

                </Grid>

そしてDataTemplate:

                <DataTemplate>
                <Grid>

                    <Border x:Name="Border" Style="{StaticResource GridBorder}">

                        <Grid x:Name="grid" Style="{StaticResource Grid}" >
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="1.3*"/>
                                <ColumnDefinition Width="2*"/>
                            </Grid.ColumnDefinitions>
                            <!-- rows for alignment -->
                            <Grid.RowDefinitions>
                                <RowDefinition Height="1*"/>
                                <RowDefinition Height="3*"/>
                                <RowDefinition Height="1*"/>
                            </Grid.RowDefinitions>
                            <TextBlock x:Name="Text1" Grid.Row="1" Text="{Binding Title}" Style="{StaticResource Title}" />
                            <TextBlock x:Name="Text2" Grid.Row="1" Text="{Binding Subtitle}" Style="{StaticResource SubTitle}" />
                        </Grid>

                    </Border>
                </Grid>
            </DataTemplate>

gridviewitemsの望ましいレイアウト

4

1 に答える 1

1

私のチームメイトのドウェインは解決策を持っていましたが、それを理解するのにしばらく時間がかかりました.

  • GridViewItem の目的の幅と高さの DependencyProperties を作成します。
  • SizeChanged イベントで GridView のサイズを測定します。(私たちの問題は、ゼロ以外の値を取得しようとしたことでした。他のイベントでは、適切なタイミングでパネルがレンダリングされませんでした。)
  • ItemContainer WrapGrid の ItemWidth と ItemHeight をこれらの DependencyProperties にバインドします。DataTemplate で幅と高さを設定しても機能しません。

一緒に縫い合わせる必要がある別々の小さなピースの束に関する問題の1つ.

于 2013-02-22T21:18:28.443 に答える