Estoy creando las columnas de un WPF DataGrid
en mi código C#. Quiero que una de las columnas se estire al ancho de DataGrid
automáticamente. En XAML, establecí Width="*"
. ¿Cómo lo hago en el código?¿Cómo hacer que la columna DataGrid se estire desde el código C#?
EDITAR
Algunas de las respuestas me parecen conducir a la solución correcta, pero me siento la necesidad de elaborar un poco más de lo que estoy tratando de hacer:
En realidad estoy derivar una nueva clase de DataGrid
. En su constructor, añado cuatro columnas así:
this.IsReadOnly = true;
this.AutoGenerateColumns = false;
this.ItemsSource = m_dataSource;
DataGridTextColumn anColumn = new DataGridTextColumn() { Header = "Col1", Binding = new Binding("B1") };
DataGridTextColumn tpColumn = new DataGridTextColumn() { Header = "Col2", Binding = new Binding("B2") };
DataGridTextColumn txColumn = new DataGridTextColumn() { Header = "Col3", Binding = new Binding("B3") };
DataGridTextColumn mdColumn = new DataGridTextColumn() { Header = "Col4", Binding = new Binding("B4") };
this.Columns.Add(anColumn);
this.Columns.Add(tpColumn);
this.Columns.Add(txColumn);
this.Columns.Add(mdColumn);
I intentado fijar la anchura de la última columna como user24601 sugirió:
mdColumn.Width = new DataGridLength(0.5, DataGridLengthUnitType.Star);
pero esto crea una columna que es tan amplio que pueda desplazarse y desplazarse por muy largo tiempo ... Mismo problema cuando uso 0.1
o incluso valores más pequeños.
Me parece que lo estoy haciendo en el lugar equivocado de alguna manera?
EDIT 2
OK, puede tener el problema, porque en realidad estoy añadiendo esto a un ScrollViewer
. Voy a correr algunas pruebas adicionales primeros ...
EDITAR 3
Bueno, las cosas no funcionan al tener la DataGrid
dentro de un ScrollViewer
... Cuando quito el ScrollViewer
, las cosas funcionan como user24601 dijo.
Hm. También se me ocurrió esto, pero esto crea que la columna sea * mucho * más ancha que mi ventana. Estoy elaborando mi pregunta un poco, tal vez las cosas se vuelven más claras. –
Para ser justos, se necesita una pequeña corrección: lo que usted escribió no funciona para 'DataGridTextColumns'. Allí, tiene que usar 'dataGrid.Columns [i] .Width = new DataGridLength (1, DataGridLengthUnitType.Star)' –
Tiene razón. Editaré mi respuesta. Obtuve el tipo correcto en el primer comentario, no en la respuesta misma. – DanTheMan