あなたの説明によると、必要なのは WPF の UniformGrid のようなパネルです。UniformGrid は、グリッド内のすべてのセルが同じサイズであるグリッドにコンテンツを配置する方法を提供します。ただし、UWP には組み込みの UniformGrid はありません。自分で実装することも、 WinRTXamlToolkit のようなサードパーティの UniformGrid を使用することもできます。
ここでは、たとえば WinRTXamlToolkit で UniformGrid を使用しています。WinRTXamlToolkit を使用するには、nuget: WinRT XAML Toolkit for Windows 10からインストールできます。
次にxmlns
、次のようなページを追加します。
xmlns:toolkit="using:WinRTXamlToolkit.Controls"
この後、次のように UniformGrid を使用できます。
<toolkit:UniformGrid Rows="1" />
ここでは、プロパティを に設定し、Rows
プロパティを1
デフォルトColumns
値に設定します0
。Columns プロパティの値がゼロ (0) の場合、行数と Grid にある表示可能な子要素の数に基づいて列数が計算されることを指定します。したがって、この UniformGrid のすべての子は 1 つの行に配置され、これは UniformGrid であるため、すべての列が同じ幅になります。
以下は、UniformGrid を の として使用するサンプルItemsPanel
ですGridView
。
XAML:
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<StackPanel>
<GridView x:Name="MyGridView" Height="60">
<GridView.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:UniformGrid Rows="1" />
</ItemsPanelTemplate>
</GridView.ItemsPanel>
<GridView.ItemContainerStyle>
<Style TargetType="GridViewItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</GridView.ItemContainerStyle>
<GridView.ItemTemplate>
<DataTemplate>
<StackPanel Background="Red">
<TextBlock HorizontalAlignment="Center" FontSize="30" Text="{Binding }" />
</StackPanel>
</DataTemplate>
</GridView.ItemTemplate>
</GridView>
<Button Click="Button_Click">Add a item</Button>
</StackPanel>
</Grid>
分離コード:
public sealed partial class MainPage : Page
{
private ObservableCollection<string> myList = new ObservableCollection<string> { "1", "2", "3", "4", "5" };
private int i = 6;
public MainPage()
{
this.InitializeComponent();
MyGridView.ItemsSource = myList;
}
private void Button_Click(object sender, RoutedEventArgs e)
{
myList.Add(i.ToString());
i += 1;
}
}
そして、それは次のようになります:
