Ширина столбцов увеличения в Silverlight DataGrid для заполнения общей ширины DG

Существует цепочка для ключей, которую вы можете использовать - для кода лучше всего проверить пример приложения GenericKeychain от Apple:

Пример GenericKeychain

16
задан Henrik P. Hessel 25 September 2010 в 05:27
поделиться

3 ответа

Решение:

    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));
            }
        }
    }
11
ответ дан 30 November 2019 в 22:02
поделиться

Проверено только в WPF, а не в Silverlight:

Я установил в WPF 3.5 SP1, и он работает отлично, никаких гарантий насчет Silverlight, но если он работает, то это действительно прекрасно.

<data:DataGridTextColumn Header="Time" Binding="{Binding}" Width="*" />
8
ответ дан 30 November 2019 в 22:02
поделиться

Я создал прикрепленный свойство для DataGrid, которое позволяет делать это в XAML:

<UserControl 
    xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"  
    x:Class="GridProperties.Page"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:gp="clr-namespace:GridProperties">
<Grid x:Name="LayoutRoot" Background="White">
    <data:DataGrid gp:GridEx.StarColumn="2">
        <data:DataGrid.Columns>
            <data:DataGridTextColumn Header="Column 1"/>
            <data:DataGridTextColumn Header="Column 2"/>
            <data:DataGridTextColumn Header="Column 3"/>
        </data:DataGrid.Columns>
    </data:DataGrid>
</Grid>
</UserControl>
1
ответ дан 30 November 2019 в 22:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: