找回密码
 立即注册

QQ登录

只需一步,快速开始

bj_zm

中级会员

48

主题

169

帖子

713

积分

中级会员

积分
713

活字格认证微信认证勋章

bj_zm
中级会员   /  发表于:2014-7-14 14:57  /   查看:7313  /  回复:7
FOR WP版本。
怎么设置FlexGrid所有列根据内容宽度显示?不够屏幕的,自动出现横向滚动条?
我试了试,New GridLength(300, GridUnitType.Auto) 和 = New GridLength(300, GridUnitType.Star)都在一屏幕里推挤。Silverlight版本里有个ColumnWidth="Auto" 可以解决,wp没有这个属性。用什么属性?

7 个回复

倒序浏览
Alice
社区贡献组   /  发表于:2014-7-14 17:15:00
沙发
回复 1楼bj_zm的帖子

你好。
如下的代码在WPF里应该可以使用去自动设置列宽。
  1. <Grid.ColumnDefinitions>
  2.   <ColumnDefinition Width="Auto" />
  3.   <ColumnDefinition Width="*" />
  4. </Grid.ColumnDefinitions>
复制代码
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
bj_zm
中级会员   /  发表于:2014-7-14 17:28:00
板凳
回复 2楼Alice的帖子

我的是vb.net 代码 不是xaml代码,还有就是grid跟这个FlexGrid不是一回事
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-14 18:08:00
地板
回复 3楼bj_zm的帖子

代码不完整,让你误解了。
上段代码是FlexGrid里面写的,Grid是Flexgrid.Column.DataTemplate里的。完整的代码是:
  1.                 <c1:Column ColumnName="_colTemplated" Header="Template" Width="200">
  2.                    <!-- template for cells in edit mode -->
  3.                     <c1:Column.CellEditingTemplate>
  4.                         <DataTemplate>
  5.                             <Grid>
  6.                                 <Grid.ColumnDefinitions>
  7.                                     <ColumnDefinition Width="Auto" />
  8.                                     <ColumnDefinition Width="*" />
  9.                                 </Grid.ColumnDefinitions>
  10.                                 <Image Source="edit_icon.png" Grid.Column="0" />
  11.                                 <TextBox Text="{Binding Name, Mode=TwoWay}" Grid.Column="1" />
  12.                             </Grid>
  13.                         </DataTemplate>
  14.                     </c1:Column.CellEditingTemplate>
  15.                 </c1:Column>
  16.             </c1:C1FlexGrid.Columns>
复制代码


WPF版本没有ColumnWidth属性,有MinColumnWidth和MaxColumnWidth属性。
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
bj_zm
中级会员   /  发表于:2014-7-16 10:09:00
5#
参考你的例子,做了一下,一样没效果。
这下面代码是我动态添加列并绑定数据源的。结果如图。                          
                                                    Col = New C1.Phone.FlexGrid.Column
                                            Col.Width = New GridLength(1, GridUnitType.Auto)
                                            Col.Header = &quot;填报人&quot;
                                            Col.Binding = New Binding(&quot;[CUNAME]&quot;)
                                            DataList.Columns.Add(Col)

显示不全。GridUnitType.Auto 明明写的是根据内容显示宽度,结果不合适。是不是有bug啊?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-16 11:44:00
6#
回复 5楼bj_zm的帖子

1.GridUnitType.Auto的意思是使用默认的宽度,这个默认的宽度不是根据内容调整的。
2.可以使用FlexGrid.AutoSizeColumn或是FlexGrid.AutoSizeColumns方法调整列宽。该方法的参数double extra传递0,就代表列宽根据内容调整。我的测试代码如下:
  1. Private Sub Grid_Loaded(sender As Object, e As RoutedEventArgs)
  2.     For i As Integer = 0 To 1
  3.         flex.Columns.Add(New Column())
  4.     Next
  5.     For i As Integer = 0 To 9
  6.         flex.Rows.Add(New Row())
  7.     Next

  8.     ' populate the unbound grid with some stuff
  9.     For r As Integer = 0 To flex.Rows.Count - 1
  10.         For c As Integer = 0 To flex.Columns.Count - 1
  11.             flex(r, c) = String.Format(&quot;超级管理员 [{0},{1}]&quot;, r, c)
  12.         Next
  13.     Next
  14.     Me.flex.AutoSizeColumns(0, 1, 0)
  15.     End Sub
  16. End Class
复制代码

效果如图:



注意:
1.该方法必须在数据填充之后使用。
2.该方法不要在页面初始化的时候使用。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
bj_zm
中级会员   /  发表于:2014-7-16 12:40:00
7#
回复 6楼Alice的帖子

好,非常感谢,就是这个意思。
我之前看到这个方法,不知道最后参数是啥,就没用,呵呵。
回复 使用道具 举报
Alice
社区贡献组   /  发表于:2014-7-16 15:54:00
8#
回复 7楼bj_zm的帖子

呵呵,能解决问题就好。

评分

参与人数 1满意度 +5 收起 理由
bj_zm + 5 问题解决!很好。3Q

查看全部评分

请点击评分,对我的服务做出评价!  5分为非常满意!

葡萄城控件服务团队

官方网站: http://www.gcpowertools.com.cn
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部