0

在我的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元素与屏幕左侧对齐,并且CheckBox元素与屏幕右侧对齐。我怎样才能做到这一点?

我需要以编程方式添加网格吗?我不想在 XAML 中执行此操作的原因是添加这些堆栈面板将是一个迭代过程,如果我以编程方式执行所有操作,它只会更好地与我的代码配合使用。

我用谷歌搜索了很多东西,但运气不佳。

非常感谢!布雷特

4

2 回答 2

0

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

Grid
  StackPanel left
     Control
  StackPanel right
     Control
于 2012-06-04T19:19:54.617 回答
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);
于 2012-06-04T20:22:35.757 回答