foreach f in $BASE/**/*.x(N)
достаточно. **
уже соответствует 0 или более каталогов, поэтому шаблон уже соответствует $BASE/*.x
.
Вы можете измерить самую длинную строку в пикселях, а затем соответствующим образом отрегулировать ширину столбца:
Graphics graphics = this.CreateGraphics();
SizeF textSize = graphics.MeasureString("How long am I?", this.Font);
Если вы создадите алгоритм для определения размера каждого столбца в соотношении этих длин вы должны получить хороший результат.
Наконец, некоторые результаты по этому вопросу. Я нашел способ сделать то же автоматическое определение размера, которое выполняется изначально и когда дважды щелкают захватом заголовка столбца.
public void AutoSizeColumns()
{
GridView gv = listView1.View as GridView;
if (gv != null)
{
foreach (var 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 (double.IsNaN(c.Width))
{
c.Width = c.ActualWidth;
}
c.Width = double.NaN;
}
}
}
Нет способа привязать к ActualWidth
столбца? Что-то вроде:
<GridViewColumn x:Name="column1" Width="{Binding ElementName=column1, Path=ActualWidth}" />
Я пробовал это, и похоже, это работает только в первый раз. Нет ошибки привязки.