在我的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中这样做的原因是添加这些堆栈面板将是一个迭代过程,如果我以编程方式完成所有操作,它对我的代码更有效。
我已经搜索了很多东西,但是没有多少运气。
非常感谢! 布雷特
答案 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);