C# 如何将文本强制设置为特定宽度?
我使用GridView来显示我的布局。在此GridView中,我手动添加了一些RowDefinitions,并在此RowDefinitions中添加了一个包含2个矩形的画布:C# 如何将文本强制设置为特定宽度?,c#,.net,wpf,pixelsense,C#,.net,Wpf,Pixelsense,我使用GridView来显示我的布局。在此GridView中,我手动添加了一些RowDefinitions,并在此RowDefinitions中添加了一个包含2个矩形的画布: foreach (Method m in sourceFile.getMethods()) { if (!m.getName().StartsWith("<") && !m.getName().EndsWith(">"))
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++;
}
}
foreach(sourceFile.getMethods()中的方法m)
{
如果(!m.getName().StartsWith(“”)
{
RowDefinition行=新的RowDefinition();
row.Height=GridLength.Auto;
MethodsContainer.RowDefinitions.Add(行);
Canvas c=新画布();
c、 宽度=宽度;
c、 高度=高度;
c、 Tag=m;
AddPreviewContactDownHandler(c,新的ContactEventHandler(onContactDown));
矩形r1=新矩形();
r1.高度=高度;
r1.宽度=m.getLoc()*(宽度/1000);
Canvas.SetLeft(r1,0);
Canvas.SetLeft(r1,0);
r1.填充=刷子。红色;
矩形r2=新矩形();
r2.高度=高度;
r2.宽度=宽度-r1.宽度;
Canvas.SetTop(r2,0);
Canvas.SetLeft(r2,r1.宽度);
r2.填充=画笔。蓝色;
c、 添加(r1);
c、 添加(r2);
Grid.SetRow(c,行计数器);
方法容器。儿童。添加(c);
行计数器++;
}
}
画布的宽度为200像素,高度为30像素。两个矩形完全填满画布。现在我想在这两个矩形上添加一些文本。但我不知道课文有多长。然而,我想强制文本总是打印到这个200px中。我怎样才能做到这一点
var txt = new TextBlock();
txt.MaxWidth = 200;
// optionally you might want the text to wrap if too long
txt.TextWrapping = TextWrapping.Wrap;
顺便说一句,它不是WPF中的像素,它是一个独立于设备的单位(1/96英寸)测量
顺便说一句,它不是WPF中的像素,而是一个独立于设备的单位(1/96英寸)测量。听起来你可以使用一个可视框。这将使文本水平和垂直拉伸。如果我正确理解了这个问题,我想这就是你想要的。xaml中的示例
<Canvas Width="200"
Height="30">
<Viewbox Width="200"
Height="30">
<TextBlock Text="Text that will fit in 200 Width"/>
</Viewbox>
</Canvas>
听起来您可以使用ViewBox。这将使文本水平和垂直拉伸。如果我正确理解了这个问题,我想这就是你想要的。xaml中的示例
<Canvas Width="200"
Height="30">
<Viewbox Width="200"
Height="30">
<TextBlock Text="Text that will fit in 200 Width"/>
</Viewbox>
</Canvas>
谢谢,这是工作,但它包装在多行文本。因为我有一个固定的高度,所以我更喜欢文本变小。@Roflcoptr:你试过我的答案了吗?这几乎就是使用Viewbox时得到的效果。还是我错过了什么?啊,我看到了。谢谢这正是我需要的。谢谢,这是工作,但它包装在多行文本。因为我有一个固定的高度,所以我更喜欢文本变小。@Roflcoptr:你试过我的答案了吗?这几乎就是使用Viewbox时得到的效果。还是我错过了什么?啊,我看到了。谢谢这正是我需要的。谢谢,这正是我需要的!谢谢,这正是我需要的!