题
我只是想得到我的头周围的反馈以为我会尝试写一些代码。
试图添加一个网格有6个由6所列的定义,然后添加一个文本框成一个网格单元。我似乎并不能够参考的细胞,我想要的。有没有方法上的网格,我可以添加的案文方框。只有格。儿童。添加(目的),没有单元的定义。
键
<Page x:Class="WPF_Tester.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Page1"
Loaded="Page_Loaded">
</Page>
C#:
private void Page_Loaded(object sender, RoutedEventArgs e)
{
//create the structure
Grid g = new Grid();
g.ShowGridLines = true;
g.Visibility = Visibility.Visible;
//add columns
for (int i = 0; i < 6; ++i)
{
ColumnDefinition cd = new ColumnDefinition();
cd.Name = "Column" + i.ToString();
g.ColumnDefinitions.Add(cd);
}
//add rows
for (int i = 0; i < 6; ++i)
{
RowDefinition rd = new RowDefinition();
rd.Name = "Row" + i.ToString();
g.RowDefinitions.Add(rd);
}
TextBlock tb = new TextBlock();
tb.Text = "Hello World";
g.Children.Add(tb);
}
更新
这里是鬼的位:
使用VS2008亲在XP
WPFbrowser项目的模板(3.5验证)
我得不到的方法自动完成。
解决方案
WPF使用一个时髦的东西叫 附属性.所以在你的XAML你可能会写这样的:
<TextBlock Grid.Row="0" Grid.Column="0" />
这将有效地移动文本块进入细胞(0,0)的网格。
在代码这看起来有点奇怪。我相信这将会是这样的:
g.Children.Add(tb);
Grid.SetRow(tb, 0);
Grid.SetColumn(tb, 0);
看看这上面的链接连接性质使得事情真的很容易做到在XAML也许在损害的直观看的代码。
其他提示
小区的位置是一个附加的财产值属于文本块,而不是电网。然而,由于财产本身属于格,你需要使用属性的定义领域,或者所提供静态功能。
TextBlock tb = new TextBlock();
//
// Locate tb in the second row, third column.
// Row and column indices are zero-indexed, so this
// equates to row 1, column 2.
//
Grid.SetRow(tb, 1);
Grid.SetColumn(tb, 2);
使用附属性格类。
在C#:
Grid.SetRow( cell, rownumber )
在键
<TextBlock Grid.Row="1" />
此外,我会建议如果你不使用动态网,使用XAML标记语言。我知道,它有一个学习曲线,但一旦你掌握了它,它是很容易的,尤其是如果您使用ControlTemplates和DataTemplates!;)
这里是一些样品
Grid grid = new Grid();
// Set the column and row definitions
grid.ColumnDefinitions.Add(new ColumnDefinition() {
Width = new GridLength(1, GridUnitType.Auto) });
grid.ColumnDefinitions.Add(new ColumnDefinition() {
Width = new GridLength(1, GridUnitType.Star) });
grid.RowDefinitions.Add(new RowDefinition() {
Height = new GridLength(1, GridUnitType.Auto) });
grid.RowDefinitions.Add(new RowDefinition() {
Height = new GridLength(1, GridUnitType.Auto) });
// Row 0
TextBlock tbFirstNameLabel = new TextBlock() { Text = "First Name: "};
TextBlock tbFirstName = new TextBlock() { Text = "John"};
grid.Children.Add(tbFirstNameLabel ); // Add to the grid
Grid.SetRow(tbFirstNameLabel , 0); // Specify row for previous grid addition
Grid.SetColumn(tbFirstNameLabel , 0); // Specity column for previous grid addition
grid.Children.Add(tbFirstName ); // Add to the grid
Grid.SetRow(tbFirstName , 0); // Specify row for previous grid addition
Grid.SetColumn(tbFirstName , 1); // Specity column for previous grid addition
// Row 1
TextBlock tbLastNameLabel = new TextBlock() { Text = "Last Name: "};
TextBlock tbLastName = new TextBlock() { Text = "Smith"};
grid.Children.Add(tbLastNameLabel ); // Add to the grid
Grid.SetRow(tbLastNameLabel , 1); // Specify row for previous grid addition
Grid.SetColumn(tbLastNameLabel , 0); // Specity column for previous grid addition
grid.Children.Add(tbLastName ); // Add to the grid
Grid.SetRow(tbLastName , 1); // Specify row for previous grid addition
Grid.SetColumn(tbLastName , 1); // Specity column for previous grid addition
不隶属于 StackOverflow