增加Silverlight DataGrid中的列宽以填充整个DG宽度 [英] Increase columns width in Silverlight DataGrid to fill whole DG width

查看:150
本文介绍了增加Silverlight DataGrid中的列宽以填充整个DG宽度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个绑定到SQL表的DataGrid控件。



XAML代码是:

 < data:DataGrid x :Name =dg_sql_data
Grid.Row =1
Visibility =Collapsed
Height =auto
Margin =0,5,5,5
AutoGenerateColumns =false
AlternatingRowBackground =Aqua
Opacity =80
>
< data:DataGrid.Columns>
< data:DataGridTextColumn Header =LatitudeBinding ={Binding lat}/>
< data:DataGridTextColumn Header =LongitudeBinding ={Binding long}/>
< data:DataGridTextColumn Header =TimeBinding ={Binding time}/>
< / data:DataGrid.Columns>
< / data:DataGrid>

是否可能增加单列大小以填充datagrid的完整宽度?
Henrik



编辑:
列为* 宽度随Silverlight SDK 4而来。

解决方案

解决方案:

  void dg_sql_data_SizeChanged(object sender,SizeChangedEventArgs e)
{
DataGrid myDataGrid =(DataGrid)sender;
//如果Visibility State Changed
if(myDataGrid.RenderSize.Width!= 0)
{
double all_columns_sizes = 0.0,则不要更改列大小;
foreach(myDataGrid.Columns中的DataGridColumn dg_c)
{
all_columns_sizes + = dg_c.ActualWidth;
}
//可用空间(-18标准vScrollbar)
double space_available =(myDataGrid.RenderSize.Width - 18) - all_columns_sizes;
foreach(myDataGrid.Columns中的DataGridColumn dg_c)
{
dg_c.Width = new DataGridLength(dg_c.ActualWidth +(space_available / myDataGrid.Columns.Count));
}
}
}

结果:




I have a DataGrid Control which is bound to a SQL Table.

The XAML Code is:

<data:DataGrid x:Name="dg_sql_data" 
                       Grid.Row="1" 
                       Visibility="Collapsed" 
                       Height="auto" 
                       Margin="0,5,5,5"
                       AutoGenerateColumns="false"
                       AlternatingRowBackground="Aqua"
                       Opacity="80"
                       >
    <data:DataGrid.Columns>
        <data:DataGridTextColumn Header="Latitude" Binding="{Binding lat}" />
        <data:DataGridTextColumn Header="Longitude" Binding="{Binding long}" />
        <data:DataGridTextColumn Header="Time" Binding="{Binding time}" />
    </data:DataGrid.Columns>
</data:DataGrid>

Is it possible increase the single columns sizes to fill out the complete width of the datagrid?

Thanks,
Henrik

Edit: Columns with "*" as width are coming with the Silverlight SDK 4.

解决方案

Solution:

    void dg_sql_data_SizeChanged(object sender, SizeChangedEventArgs e)
    {
        DataGrid myDataGrid = (DataGrid)sender;
        // Do not change column size if Visibility State Changed
        if (myDataGrid.RenderSize.Width != 0)
        {
            double all_columns_sizes = 0.0;
            foreach (DataGridColumn dg_c in myDataGrid.Columns)
            {
                all_columns_sizes += dg_c.ActualWidth;
            }
            // Space available to fill ( -18 Standard vScrollbar)
            double space_available = (myDataGrid.RenderSize.Width - 18) - all_columns_sizes;
            foreach (DataGridColumn dg_c in myDataGrid.Columns)
            {
                dg_c.Width = new DataGridLength(dg_c.ActualWidth + (space_available / myDataGrid.Columns.Count));
            }
        }
    }

Result:

这篇关于增加Silverlight DataGrid中的列宽以填充整个DG宽度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆