У меня есть DataGrid которого столбец свойства должны быть изменены программно в коде позади для этого я использую событиеC# WPF, как изменить размер DataGrid столбцы пропорционально в коде позади
AutoGeneratingColumn="Datagrid_AutoGeneratingColumn"
, на котором я:
private void Datagrid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
string strDatagridName = (sender as DataGrid).Name;
switch (strDatagridName.ToUpper())
{
case "DTGPPTAB1":
case "DTGPPTAB3":
switch (e.PropertyName.ToUpper())
{
/*----Visible ----*/
case "DESCRIPTION": e.Column.Header = Langs.Word(Langs.eWords.Description); e.Column.Width = 33; break;<-------------here
case "NOTE": e.Column.Header = Langs.Word(Langs.eWords.Notes); break;
case "PARTPROGRAMFILENAME": e.Column.Header = Langs.Word(Langs.eWords.PPfilename); break;
/*----Hidden ----*/
case "LSTBLADES": e.Column.Header = Langs.Word(Langs.eWords.Blades); break;
case "LSTMYIMAGES": e.Column.Header = Langs.Word(Langs.eWords.Image); e.Column.Visibility = Visibility.Collapsed; break;
case "LSTMYSOUNDFILES": e.Column.Header = Langs.Word(Langs.eWords.Sound); e.Column.Visibility = Visibility.Collapsed; break;
case "BARCODE": e.Column.Header = Langs.Word(Langs.eWords.Barcode); e.Column.Visibility = Visibility.Collapsed; break;
case "PROGRAMTRACEFIELDS": e.Column.Header = Langs.Word(Langs.eWords.ProgramTracefields); e.Column.Visibility = Visibility.Collapsed; break;
default: e.Column.Header = e.PropertyName; break;
}
break;
}
и все работает нормально. Что мне нужно в случае ОПИСАНИЕ. Здесь я могу установить столбец widht в пикселях, но я не могу установить его пропорционально, например. 33%.
Итак, я хотел бы установить первые три столбца для разделения всего пространства данных в 33% 33% 33%. Так что в% вместо, а не в пикселях. Thanx
Thanx миллион. Итак, 1 * означает такую же ширину? – Patrick
Да, в значительной степени. Это все относительные размеры. Если все они установлены на 1 *, то они будут иметь одинаковый размер относительно размера 'DataGrid'. –