Hen*_*sel 16 c# silverlight datagrid width
我有一个绑定到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="Latitude" Binding="{Binding lat}" />
<data:DataGridTextColumn Header="Longitude" Binding="{Binding long}" />
<data:DataGridTextColumn Header="Time" Binding="{Binding time}" />
</data:DataGrid.Columns>
</data:DataGrid>
Run Code Online (Sandbox Code Playgroud)
是否可以增加单列大小以填充数据网格的整个宽度?
谢谢,
亨里克
编辑:Silverlight SDK 4附带宽度为"*"的列.
Hen*_*sel 11
解:
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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果:
我在WPF 3.5 SP1中设置它完美无瑕,不保证Silverlight,但如果它有效,它确实很迷人.
<data:DataGridTextColumn Header="Time" Binding="{Binding}" Width="*" />
Run Code Online (Sandbox Code Playgroud)