<ListView Name="persons" SelectionChanged="persons_SelectionChanged">
<ListView.View>
<GridView AllowsColumnReorder="False">
<GridViewColumn Header="Name" DisplayMemberBinding="{Binding Name}" Width="auto"/>
<GridViewColumn Header="Age" DisplayMemberBinding="{Binding Age}" Width="auto"/>
</GridView>
</ListView.View>
</ListView>
我的UI的codebehind:
The Codebehind of my UI:
internal void Update(IEnumerable<Person> pers)
{
this.persons.ItemsSource = null;
this.persons.ItemsSource = pers;
UpdateLayout();
}
我的实体:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
该GridViewColumns有GridViewColumn报头的宽度。即使我调用Update()与人有很长的名字。列没有得到调整。
The GridViewColumns have the width of the GridViewColumn-Header. Even if i call Update() with Persons with a long name. The Column does not get resized.
一)我怎样才能调整名称-column自动(当我叫更新)的名称最长的长度,但不超过值x(我想指定列的最大宽度)长?
a) How can i resize the "Name"-column automatically (when i called Update) to the length of the longest Name, but not longer than a Value x (i want to specify a maximum width of a column)?
二)我怎么可以指定时代-Column填充空间的control's结束(这样的GridView的列使用控制的完整的宽度)?
b) How can i specify that the "Age"-Column fills the space to the control´s end (so that the columns of the gridview uses the complete width of the control)?
推荐答案
GridView控件不会自动调整大小。
GridView does not resize automatically.
要调整列您可以
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的是快,但它需要多一点的宝宝坐着。
GridView is fast but it takes a bit of baby sitting.
相关推荐
最新文章