C# 运行时在wpf按钮内左对齐文本
我在运行时用一个ViewBox创建一个按钮,在ViewBox中添加一个TextBlock。这一切都很好,除了我似乎无法使文本左对齐。经过一些修改,我意识到这是因为文本块不是按钮的全宽C# 运行时在wpf按钮内左对齐文本,c#,wpf,C#,Wpf,我在运行时用一个ViewBox创建一个按钮,在ViewBox中添加一个TextBlock。这一切都很好,除了我似乎无法使文本左对齐。经过一些修改,我意识到这是因为文本块不是按钮的全宽 var row = new RowDefinition(); OrdersGrid.RowDefinitions.Add(row); var button = new Button(); button.HorizontalAlignment = HorizontalAlignment.Stretch; butto
var row = new RowDefinition();
OrdersGrid.RowDefinitions.Add(row);
var button = new Button();
button.HorizontalAlignment = HorizontalAlignment.Stretch;
button.VerticalAlignment = VerticalAlignment.Stretch;
button.MaxHeight = 40;
button.Background = (Brush)System.Windows.Application.Current.Resources["OrangeGradient"];
button.BorderThickness = new Thickness(.1);
button.Margin = new Thickness(.1);
OrdersGrid.Children.Add(button);
Grid.SetColumn(button, 0);
Grid.SetRow(button, rowNumber);
Viewbox vb = new Viewbox();
vb.StretchDirection = StretchDirection.Both;
vb.HorizontalAlignment = HorizontalAlignment.Stretch;
TextBlock tb = new TextBlock();
tb.HorizontalAlignment = HorizontalAlignment.Stretch;
tb.Text = rowNumber + " - " + CustomerName;
tb.Padding = new Thickness(0);
tb.TextAlignment = TextAlignment.Left;
vb.Child = tb;
button.Content = vb;
如果我更改
tb.HorizontalAlignment=HorizontalAlignment.Stretch代码>至tb.Width=400代码>左对齐。然而,我不能保证这是正确的大小,但它确实将问题缩小到文本块的宽度。如何使TextBlock(和ViewBox)成为按钮的全宽 将按钮的HorizontalContentAlignment
属性设置为Left
:
button.HorizontalContentAlignment = HorizontalAlignment.Left;
将按钮的HorizontalContentAlignment
属性设置为Left
:
button.HorizontalContentAlignment = HorizontalAlignment.Left;
为什么要将内容设置为按钮的全宽?这会造成什么视觉或功能上的差异?我在你的代码中没有看到任何需要这样做的东西。如果TextBlock有自己的背景画笔,这就是一个原因,但它没有
如果您确实需要在拉伸的内容中使文本居中,请在按钮内的ViewBox周围放置一个边框,设置button.HorizontalContentAlignment=Stretch,并设置ViewBox.HorizontalAlignment=left
这里的底线是,默认情况下,按钮的内容位于按钮内容区域的中心,并且Button.HorizontalContentAlignment
控制着这一点。其默认值为“中心”。如果要强制内容拉伸,请将其设置为“拉伸”
如果你真的只想左对齐内容,只需使用mm8的答案。又快又容易 为什么要将内容设置为按钮的全宽?这会造成什么视觉或功能上的差异?我在你的代码中没有看到任何需要这样做的东西。如果TextBlock有自己的背景画笔,这就是一个原因,但它没有
如果您确实需要在拉伸的内容中使文本居中,请在按钮内的ViewBox周围放置一个边框,设置button.HorizontalContentAlignment=Stretch,并设置ViewBox.HorizontalAlignment=left
这里的底线是,默认情况下,按钮的内容位于按钮内容区域的中心,并且Button.HorizontalContentAlignment
控制着这一点。其默认值为“中心”。如果要强制内容拉伸,请将其设置为“拉伸”
如果你真的只想左对齐内容,只需使用mm8的答案。又快又容易