我如何将一个元素对齐到左边,另一个元素对齐到右边?

时间:2012-06-04 19:09:23

标签: c# windows-phone-7

在我的Windows Phone 7应用中,我希望TextBlock后跟CheckBox。从左到右。

我正在以编程方式执行此操作,我可以使用以下代码执行此操作:

StackPanel ControlStackPanel = new StackPanel();
ControlStackPanel.Orientation = System.Windows.Controls.Orientation.Horizontal;

TextBlock ControlTextBlock = new TextBlock();
ControlTextBlock.Text = @"ControlNameGoesHere";

CheckBox ControlCheckBox = new CheckBox();
ControlCheckBox.Margin = new Thickness(0, 0, 0, 0);
ControlCheckBox.HorizontalAlignment = System.Windows.HorizontalAlignment.Right;

ControlStackPanel.Children.Add(ControlTextBlock);
ControlStackPanel.Children.Add(ControlCheckBox);

但是,我实际上希望TextBlock元素与屏幕的 left 对齐,并且CheckBox元素与对齐右侧侧面。我该怎么做?

我是否需要以编程方式添加网格?我不想在XAML中这样做的原因是添加这些堆栈面板将是一个迭代过程,如果我以编程方式完成所有操作,它对我的​​代码更有效。

我已经搜索了很多东西,但是没有多少运气。

非常感谢! 布雷特

2 个答案:

答案 0 :(得分:0)

内容控件一次只有一个对齐方式。其中的所有控件都根据其水平对齐方式对齐。您可能希望在较大的外部容器内具有两个具有不同对齐的内容控件。

Grid
  StackPanel left
     Control
  StackPanel right
     Control

答案 1 :(得分:0)

尝试将控件放入Grid列中。 ControlTextBox应该转到Grid的第一列ControlCheckBox - 进入第二列。 这是一些代码:

TextBlock ControlTextBlock = new TextBlock();
ControlTextBlock.Text = @"ControlNameGoesHere";
ControlTextBlock.SetValue(Grid.ColumnProperty, 0);
ControlTextBlock.VerticalAlignment = System.Windows.VerticalAlignment.Top;

CheckBox ControlCheckBox = new CheckBox();
ControlCheckBox.Margin = new Thickness(0, 0, 0, 0);
ControlCheckBox.SetValue(Grid.ColumnProperty, 1);
ControlCheckBox.VerticalAlignment = System.Windows.VerticalAlignment.Top;

ColumnDefinition FirstColumn = new ColumnDefinition();
FirstColumn.Width = System.Windows.GridLength.Auto;
ColumnDefinition SecondColumn = new ColumnDefinition();
SecondColumn.Width = System.Windows.GridLength.Auto;

Grid ContentGrid = new Grid();
ContentGrid.ColumnDefinitions.Add(FirstColumn);
ContentGrid.ColumnDefinitions.Add(SecondColumn);
ContentGrid.Children.Add(ControlTextBlock);
ContentGrid.Children.Add(ControlCheckBox);