Silverlight-Scrollviewer中的DataGrid,Column.Width =“ *”使datagrid占据多个屏幕宽度

| 当我进行以下设置时,最后一列的宽度为*,导致datagrid创建巨大的水平滚动条(将网格扩展到屏幕的几个宽度)。我不太确定为什么会这样,但是我确实需要一种避免这种情况的方法。我不想必须使用*长度来“模拟”列。 编辑:显然我不是唯一注意到这一点的人。 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; }
    }
    
已邀请:
如果删除 dg.Columns [2] .Width = new DataGridLength(1,DataGridLengthUnitType.Star); 问题应该解决。请问为什么您要最后一栏占用其余的空间?该列实际上知道要适当调整自身大小以适合其单元格大小和列标题大小。 另外,如果您未指定列的宽度,那么您实际上并不需要滚动查看器来滚动并查看所有列。数据网格内置了一个scrollviewer,当屏幕上没有列时,将显示水平滚动条。 我希望这有帮助。 :)     
您需要在scrollviewer上放置一个maxwidth吗?否则,width默认为auto,maxwidth为infinity     

要回复问题请先登录注册