GridViewColumn Width Adjustment

前端 未结 2 774
抹茶落季
抹茶落季 2020-12-06 19:44

My UI:


        
            

        
相关标签:
2条回答
  • 2020-12-06 20:29

    GridView does not resize automatically.

    To resize the columns you can

        foreach (GridViewColumn c in gv.Columns)
        {
            // Code below was found in GridViewColumnHeader.OnGripperDoubleClicked() event handler (using Reflector)
            // i.e. it is the same code that is executed when the gripper is double clicked
            // if (adjustAllColumns || App.StaticGabeLib.FieldDefsGrid[colNum].DispGrid)
            if (double.IsNaN(c.Width))
            {
                c.Width = c.ActualWidth;
            }
            c.Width = double.NaN;
         }  
    

    As for sizing the last to fill area I do it with a converter. I don't think this converter does exactly what you need for this but it should get you started.

        <GridViewColumn Width="{Binding ElementName=lvCurDocFields, Path=ActualWidth, Converter={StaticResource widthConverter}, ConverterParameter=100}">
    
    
        [ValueConversion(typeof(double), typeof(double))]
        public class WidthConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                // value is the total width available
                double otherWidth;
                try
                {
                    otherWidth = System.Convert.ToDouble(parameter);
                }
                catch
                {
                    otherWidth = 100;
                }
                if (otherWidth < 0) otherWidth = 0;
    
                double width = (double)value - otherWidth;
                if (width < 0) width = 0;
                return width; // columnsCount;
    
            }
    
            public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
    

    GridView is fast but it takes a bit of baby sitting.

    0 讨论(0)
  • 2020-12-06 20:34

    I pulled this from How to autosize and right-align GridViewColumn data in WPF?

    <Window.Resources>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </Window.Resources>
    

    That help you at all?

    0 讨论(0)
提交回复
热议问题