在我的Windows手机应用程序中,我正在创建一个动态按钮,如下所示:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="24,0,0,0">
<TextBox x:Name="tb_groupname"
Height="90"
Background="White"
Margin="0,0,125,517"
Foreground="Blue" TextChanged="tb_groupname_TextChanged" GotFocus="tb_groupname_GotFocus" LostFocus="tb_groupname_LostFocus"/>
<Button x:Name="btn_groupname"
Content="Add"
Background="AliceBlue"
Foreground="Blue"
FontSize="25"
Width="120"
Height="90"
HorizontalAlignment="Right"
VerticalAlignment="Top" Click="btn_groupname_Click"></Button>
<ListBox x:Name="lb_groupofcontacts" ItemsSource="{Binding}" Margin="0,118,0,0">
</ListBox>
以下是xaml.cs页面代码
private void btn_groupname_Click(object sender, RoutedEventArgs e)
{
if (tb_groupname.Text != string.Empty)
{
List<Button> buttons = new List<Button>();
Button btn = new Button();// Cast the control to Button.
btn.Content = tb_groupname.Text;
btn.Width = 200;
btn.Height = 200;
btn.Click += new RoutedEventHandler(btn_Click); // Add event to button.
buttons.Add(btn);
buttonName = tb_groupname.Text;
tb_groupname.Text = string.Empty;
lb_groupofcontacts.DataContext = buttons;
}
}
然后将按钮添加到列表框lb_groupofcontacts
中,但是当我创建另一个动态按钮时,它映射到上一个按钮意味着它不会更改按钮的位置
我想要那个
first button created on top left
second button created on top right
third button created on center left
forth button created on center right
fifth button created on bottom left
sixth button created on botton right
请建议我如何更改上述类似的位置,或者如果您知道改变动态位置的任何其他方式,请告诉我,等待您的回复。 感谢。
答案 0 :(得分:0)
您可以通过将其Margin
属性设置为不同的值来操纵Button的位置(第一个按钮为“0,0”,第二个按钮为“0,200”,依此类推)。
但这不是很好的方法,正确的方法取决于你需要做什么。我建议将具有6个单元格的Grid替换为ListBox,这是最简单的决定。
答案 1 :(得分:0)
首先,您要将列表对象创建为Button_click
,因此每次创建新列表并添加only new one button
并将该列表作为listbox's Content
时,您就无法添加第二个按钮。
您可以通过以下方式动态设置按钮位置:
btn.Margin = new Thickness(LEFT,TOP,RIGHT,BOTTOM);
OR
btn.HorizontalAlignment = System.Windows.HorizontalAlignment.Left;
btn.VerticalAlignment = System.Windows.VerticalAlignment.Center;