Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 运行时在wpf按钮内左对齐文本_C#_Wpf - Fatal编程技术网

C# 运行时在wpf按钮内左对齐文本

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

我在运行时用一个ViewBox创建一个按钮,在ViewBox中添加一个TextBlock。这一切都很好,除了我似乎无法使文本左对齐。经过一些修改,我意识到这是因为文本块不是按钮的全宽

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的答案。又快又容易