2

グループ化されたデータソースでは、HeaderTemplate は GroupStyle.ContainerStyle の下に配置され、コンテナーはヘッダー用とアイテム用の 2 つの行で構成されます。

これは、GridView.HeaderTemplate には当てはまらないようです。ヘッダーは、次のように項目の左側に表示されます。

ヘッダーテキスト [項目 1]

代わりに、項目リストの上にヘッダー テキストを移動する方法はありますか? アクセスできないように見えるGridViewテンプレート自体を変更する必要があると思います。

GridView の XAML は次のとおりです。それは非常に簡単です:

<GridView x:Name="gridItems" ItemContainerStyle="{StaticResource GridViewListContainerStyle}" ItemsSource="{Binding Items}" SelectionMode="None" AllowDrop="True" CanDragItems="True" VerticalAlignment="Top" HorizontalAlignment="Center"  CanReorderItems="True" Padding="1">
        <GridView.HeaderTemplate>
            <DataTemplate>
                <Grid>
                   <TextBox Text="{Binding Title}" Width="290" MaxLength="20"/>                                                            
                </Grid>
            </DataTemplate>
        </GridView.HeaderTemplate>
        <GridView.ItemTemplate>
            <DataTemplate>
                <local:MyControl DataContext="{Binding}"/>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

ありがとう。

4

3 に答える 3

0

この状況を処理した方法は、垂直方向の StackPanel に GridView をカプセル化し、その上にテキスト プロパティがヘッダー テキストとして設定された TextBlock を持つグリッドを追加することでした。サンプル XAML を以下に示します。

<StackPanel Orientation="Vertical">
    <Grid>
        <TextBlock Text="My Header Text"/>
    </Grid>
    <GridView x:Name="GridViewName"
        Grid.Row="1" 
            Height="500" 
            SelectionMode="None" 
            IsItemClickEnabled="True" 
            ItemClick="GVItem_Click" 
            ItemTemplate="{StaticResource ItemTemplate}">
    </GridView>
</StackPanel>

これが助けになり、頭をぶつけて無駄にした時間を誰かが節約できることを願っています:)

于 2013-04-28T17:25:36.353 に答える
0

スタイルを変更するのではなく (スタイルの一部だけを変更して、デフォルトのテーマ スタイルをコントロールの残りの部分に適用する方法がないため、現時点ではかなり不便です)、以前に StackPanel を使用してこれを行っていました。後でこのアプローチを試してみましたが、これもうまくいきます。どれだけ優れているかはわかりませんが、ヘッダーを gridview コントロール内に保持できます。

HeaderTemplate と ItemPanelTemplate の余白に注意してください。

<GridView.HeaderTemplate>
    <DataTemplate>
        <TextBlock
            Text="Header"
            VerticalAlignment="Top"
            Margin="10,10,-200,0"
            />
    </DataTemplate>
    </GridView.HeaderTemplate>
        <GridView.ItemsPanel>
            <ItemsPanelTemplate>
                <VariableSizedWrapGrid Margin="0,50,0,0"/>
                    </ItemsPanelTemplate>
         </GridView.ItemsPanel>
      ....
    </GridView>

必要に応じて、HeaderTemplate と ItemsPanelTemplate の余白を調整できます。VariableSizedWrapGrid を必要なコンテナーに変更することもできます。

于 2014-01-21T16:50:29.570 に答える
0

実際、私はそれを理解しました。思ったよりずっと簡単です。必要なのは、ユーザー コントロールを作成し、グリッド内の別のコントロールにヘッダーを追加することだけです。

于 2012-12-22T23:51:41.950 に答える