Mi interfaz de usuario:GridViewColumn ajuste de ancho
<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>
El Codebehind de mi interfaz de usuario:
internal void Update(IEnumerable<Person> pers)
{
this.persons.ItemsSource = null;
this.persons.ItemsSource = pers;
UpdateLayout();
}
Mis Entidades:
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
Los GridViewColumns tienen el ancho de la GridViewColumn-cabecera. Incluso si llamo a Update() con Personas con un nombre largo. La columna no cambia de tamaño.
a) ¿Cómo puedo cambiar el tamaño de la columna "Nombre" automáticamente (cuando llamé a Update) a la longitud del nombre más largo, pero no más de un valor x (quiero especificar el ancho máximo de una columna) ?
b) ¿Cómo puedo especificar que la columna "Edad" llene el espacio al final del control (para que las columnas de la vista de cuadrícula utilicen el ancho completo del control)?
Sé que esto es bastante antiguo, pero quiero destacar, cuán importante es el tiempo de la corrección 'ColumnWidth' y que realmente funciona bien cuando se aplica correctamente. Asegúrese de que el contenedor GridView esté cargado y visible. Tuve una combinación desagradable de un GridView que se colocó dentro de un expansor que a su vez era parte de un control virtual de virtualización. Es decir, un cambio de tamaño sin estar en pantalla daría un ancho cero y los artículos podrían cambiar cuando la plantilla se recicla para diferentes datos. Ahora estoy un poco feliz con mi solución. – grek40