Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

[DataTable] Horizontal scrolling problem in DataTable

オープン
#645 コメント 3 件 リアクション 2 件 担当者 0 名 GitHub で見る

@cricketthomas がすでに取り組んでいます。

2026年5月22日 から。

  • #806 @cricketthomas による — オープン

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
csharp
領域
frontend

調査の方向性

提供された WinUI 3 C# ListView および DataTable XAML サンプルで問題を再現することから始め、HorizontalScrollBarVisibility="Auto"、DesiredWidth="auto"、および長い Description 値に注目します。次に、DataTable と DataRow のレイアウト動作を追跡し、列がコンテンツ全体を表示できること、また水平方向のスクロールが不要な場合にスクロールバーが非表示になることを確認します。

索引モデルが issue の本文から書いたものです。

説明

bug :bug: experiment :test_tube: functional help wanted issue 🧪 labs 🧪
Describe the bug

When we enable horizontal scrollbars in the ListView parent of DataTable, it remains always visible even when not needed.

Also, when a column has lots of content it doesn't expand property to take as much horizontal space as needed to display its content completely, it just makes the rest of the content hidden.

Steps to reproduce
Repro sample

Code Behind


using System.Collections.ObjectModel;
using Microsoft.UI.Xaml.Controls;

namespace AppControlManager.Pages;

public sealed partial class Test : Page
{
	private static Test? _instance;
	public static Test Instance => _instance ??= new Test();

	public ListView MainListViewControl => MainListView;

	public Test()
	{
		this.InitializeComponent();
		_instance = this;

		InventoryItem[] items = new InventoryItem[NumberOfRows];

		for (int i = 0; i < NumberOfRows; i++)
		{
			items[i] = new()
			{
				Id = i,
				Name = i.ToString(),
				Description = i.ToString(),
				Quantity = i,
			};
		}

		items[6].Name = "Hello, testing!";
		items[200].Description = "This is a very long description that should have been out view at the start This is a very long description that should have been out view at the start";
		items[1500].Description = "This is a very long description that should have been out of view at the start...";

		InventoryItems = [.. items];
	}
	public const int NumberOfRows = 10000;
	public ObservableCollection<InventoryItem> InventoryItems { get; set; }
}

public class InventoryItem
{
	public int Id { get; set; }
	public string? Name { get; set; }
	public string? Description { get; set; }
	public int Quantity { get; set; }
}


<br>

XAML


<Page
    x:Class="AppControlManager.Pages.Test"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:AppControlManager.Pages"
    xmlns:controls="using:CommunityToolkit.WinUI.Controls"
    xmlns:behaviors="using:CommunityToolkit.WinUI.Behaviors"
    xmlns:interactivity="using:Microsoft.Xaml.Interactivity"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">
    <Grid>
        <ListView x:Name="MainListView" Height="300"
                  HorizontalAlignment="Stretch"
                  VerticalAlignment="Top"
                  SelectionMode="Multiple"
                  ScrollViewer.HorizontalScrollBarVisibility="Auto"
                  ScrollViewer.HorizontalScrollMode="Enabled"
                  ItemsSource="{x:Bind InventoryItems}">
            <ListView.Header>
                <Border Padding="8,4,0,4"
                    Background="{ThemeResource SolidBackgroundFillColorTertiaryBrush}"
                    CornerRadius="4">
                    <interactivity:Interaction.Behaviors>
                        <behaviors:StickyHeaderBehavior />
                    </interactivity:Interaction.Behaviors>
                    <controls:DataTable ColumnSpacing="16">
                        <controls:DataColumn Content="Id" CanResize="True" DesiredWidth="auto" HorizontalAlignment="Stretch"/>
                        <controls:DataColumn CanResize="True"
                                         Content="Name" HorizontalAlignment="Stretch" DesiredWidth="auto"/>
                        <controls:DataColumn CanResize="True" HorizontalAlignment="Stretch" DesiredWidth="auto">
                            <TextBlock FontWeight="SemiBold"
                                   Text="Description" />
                        </controls:DataColumn>
                        <controls:DataColumn Content="Quantity" CanResize="True" HorizontalAlignment="Stretch" DesiredWidth="auto"/>
                    </controls:DataTable>
                </Border>
            </ListView.Header>
            <ListView.ItemTemplate>
                <DataTemplate x:DataType="local:InventoryItem">
                    <controls:DataRow HorizontalAlignment="Left">
                        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Stretch"
                               Text="{x:Bind Id}" />
                        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Stretch"
                               Text="{x:Bind Name}" />
                        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Stretch"
                               Text="{x:Bind Description}" />
                        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Stretch"
                               Text="{x:Bind Quantity}" />
                    </controls:DataRow>
                </DataTemplate>
            </ListView.ItemTemplate>
            <ListView.ItemContainerStyle>
                <Style BasedOn="{StaticResource DefaultListViewItemStyle}"
                   TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Left" />
                </Style>
            </ListView.ItemContainerStyle>
        </ListView>
    </Grid>
</Page>


<br>
Expected behavior

I expect each column to expand wide to display its content completely so i can use the scrollbar to horizontally navigate.

I also expect the horizontal scrollbar to not be visible when it's set to "Auto" in the parent ListView, when there is nothing to horizontally scroll to.

Screenshots

Image

Image

Code Platform
  • UWP
  • WinAppSDK / WinUI 3
  • Web Assembly (WASM)
  • Android
  • iOS
  • MacOS
  • Linux / GTK
Windows Build Number
  • Windows 10 1809 (Build 17763)
  • Windows 10 1903 (Build 18362)
  • Windows 10 1909 (Build 18363)
  • Windows 10 2004 (Build 19041)
  • Windows 10 20H2 (Build 19042)
  • Windows 10 21H1 (Build 19043)
  • Windows 11 21H2 (Build 22000)
  • Other (specify)
Other Windows Build number

Windows 11 build 26120.3281

App minimum and target SDK version
  • Windows 10, version 1809 (Build 17763)
  • Windows 10, version 1903 (Build 18362)
  • Windows 10, version 1909 (Build 18363)
  • Windows 10, version 2004 (Build 19041)
  • Other (specify)
Other SDK version

Windows 11 build 22621

Visual Studio Version

Preview

Visual Studio Build Number

17.14.0 Preview 1.0

Device form factor

Desktop

Additional context

No response

Help us help you

No, I'm unable to contribute a solution.

主要言語
C#
スター
485
フォーク
89
平均マージ
1日 11時間
マージ済み PR(30日)
3

環境構築

Codespaces で開く

このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

CommunityToolkit/Labs-Windows のほかの issue

CommunityToolkit/Labs-Windows の issue をすべて見る

似ている issue

C# の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。