Silverlight - DataGrid в Scrollviewer, Column.Width = "*" заставляет сетку данных занимать несколько значений ширины экрана - PullRequest
4 голосов
/ 13 апреля 2011

При следующей настройке последний столбец шириной * заставляет сетку данных создавать огромные горизонтальные полосы прокрутки (расширяет сетку до нескольких значений ширины экрана).Я не совсем уверен, почему это так, но мне действительно нужен способ избежать этого.Я не хочу "имитировать" столбцы с * длинами.

edit: Видимо, я не единственный, кто это заметил.http://connect.microsoft.com/VisualStudio/feedback/details/559644/silverlight-4-datagrid-star-column-width

Xaml:

<ScrollViewer Padding="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"  >
    <sdk:DataGrid AutoGenerateColumns="False" x:Name="dg"/>
</ScrollViewer>

Код:

private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        dg.Columns.Add(new DataGridTextColumn { Binding = new Binding("A"), Header = "A" });
        dg.Columns.Add(new DataGridTextColumn { Binding = new Binding("B"), Header = "B" });
        dg.Columns.Add(new DataGridTextColumn { Binding = new Binding("C"), Header = "C" });
        dg.Columns[2].Width = new DataGridLength(1, DataGridLengthUnitType.Star);
        dg.ItemsSource = new[] 
        {
            new I { A = "SAF", B = "SAF", C = "SAF" },
            new I { A = "SAF", B = "SAF", C = "SAF" },
            new I { A = "SAF", B = "SAF", C = "SAF" }
        };
    }

    public class I
    {
        public string A { get; set; }
        public string B { get; set; }
        public string C { get; set; }
    }

Ответы [ 2 ]

2 голосов
/ 02 ноября 2011

вам нужно поставить максимальную полосу прокрутки просмотра?в противном случае ширина по умолчанию равна auto, а максимальная ширина равна бесконечности

1 голос
/ 14 апреля 2011

Если вы удалите

dg.Columns [2] .Width = new DataGridLength (1, DataGridLengthUnitType.Star);

проблема должна уйти. Могу я спросить, почему вы хотите, чтобы последний столбец занимал остальное пространство? Столбец действительно знает, как правильно изменить размер, чтобы соответствовать размеру его ячейки и заголовка столбца.

Кроме того, если вы не укажете ширину столбца, тогда вам не нужен прокрутка для просмотра и просмотра всех столбцов. Сетка данных имеет встроенный просмотрщик прокрутки, и когда на экране появляются столбцы, появляется горизонтальная полоса прокрутки.

Надеюсь, это поможет. :)

...