Я использую GridView для отображения моего макета. Для этого GridView я вручную добавить некоторые RowDefinitions и в этом RowDefinitions добавить 1 Холст, содержащий 2 прямоугольника:Как форматировать текст в определенной ширине?
foreach (Method m in sourceFile.getMethods())
{
if (!m.getName().StartsWith("<") && !m.getName().EndsWith(">"))
{
RowDefinition row = new RowDefinition();
row.Height = GridLength.Auto;
MethodsContainer.RowDefinitions.Add(row);
Canvas c = new Canvas();
c.Width = width;
c.Height = height;
c.Tag = m;
Contacts.AddPreviewContactDownHandler(c, new ContactEventHandler(onContactDown));
Rectangle r1 = new Rectangle();
r1.Height = height;
r1.Width = m.getLoc() * (width/1000);
Canvas.SetLeft(r1, 0);
Canvas.SetLeft(r1, 0);
r1.Fill = Brushes.Red;
Rectangle r2 = new Rectangle();
r2.Height = height;
r2.Width = width - r1.Width;
Canvas.SetTop(r2, 0);
Canvas.SetLeft(r2, r1.Width);
r2.Fill = Brushes.Blue;
c.Children.Add(r1);
c.Children.Add(r2);
Grid.SetRow(c, rowCounter);
MethodsContainer.Children.Add(c);
rowCounter++;
}
}
Полотно 200px ширина и высота 30px. Оба прямоугольника точно заполняют холст. Теперь я хочу добавить текст над этими двумя прямоугольниками. Но я не знаю, как долго текст. Однако я хочу заставить текст всегда печатать в этом 200px. Как я могу это достичь?
Благодаря это работает, но это оборачивает текст в несколько строк. Поскольку у меня есть фиксированная высота, я бы предпочел, чтобы текст стал меньше. – RoflcoptrException 2010-12-08 12:06:15
@ Roflcoptr: Вы попробовали мой ответ? Это в значительной степени эффект, который вы получите при использовании Viewbox. Или я что-то пропустил? – 2010-12-08 13:38:25