如何解决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\",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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。