GridViewColumn宽度调整
我的UI:
我的UI的Codebehind:
internal void Update(IEnumerable pers) { this.persons.ItemsSource = null; this.persons.ItemsSource = pers; UpdateLayout(); }
我的实体:
class Person { public string Name { get; set; } public int Age { get; set; } }
GridViewColumns具有GridViewColumn-Header的宽度。 即使我使用长名称的人调用Update()。 列不会resize。
a)如何自动(当我调用Update时)将“名称”列调整为最长名称的长度,但不长于值x(我想指定列的最大宽度)?
b)如何指定“Age”-Column将空间填充到控件的末尾(以便gridview的列使用控件的完整宽度)?
GridView不会自动resize。
要调整列的大小,您可以
foreach (GridViewColumn c in gv.Columns) { // Code below was found in GridViewColumnHeader.OnGripperDoubleClicked() event handler (using Reflector) // ie 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; }
至于确定最后填充区域的大小,我使用转换器。 我不认为这个转换器完全符合您的需要,但它应该让您开始。
[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很快但需要一点宝宝坐着。
我从如何在WPF中自动调整和右对齐GridViewColumn数据中提取了这个?
这对你有帮助吗?