WPF菜鸟提问!求大神赐教啊啊啊啊!!~~~~~~~~~~~~~~~~

Joanna_yan 2012-06-18 08:50:37
我想做一个自定义控件,控件包含一个桌子的图片,和一个TextBlock,把自定义控件拖动到mainwindow之后想要让第一个拖动进来的TextBlock显示1,第二个显示2,就像1号桌,2号桌一样。这样一直可以做到100桌。

能实现么?怎么实现?用TextBlock.Text数据绑定么?
...全文
180 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
E次奥 2012-06-20
  • 打赏
  • 举报
回复
你WrapPanel的Name叫什么,就写this.你WrapPanel的name属性。在后边!Children.Add。。。。
Joanna_yan 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

tbl.Margin = new Thickness(10);
[/Quote]

明白了,谢谢你!b( ̄▽ ̄)d
__天涯寻梦 2012-06-20
  • 打赏
  • 举报
回复
tbl.Margin = new Thickness(10);
Joanna_yan 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 的回复:]
代码是不是放在构造函数,并且在 InitializeComponent 之上? 如果是,放到 InitializeComponent 下面去
[/Quote]
还真是这样!!问题解决了!

但是还有一个问题想问一下,就是这样创建的空间一个挨着一个,好难看啊,能不能在后台实现像在前台一样指定控件的Margin属性?前台的我会,但是后台老是不对,用什么格式指定呢?
__天涯寻梦 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 8 楼 的回复:

断点 this.WrapPanel1.Children.Add(tbl); 在这行,执行到那,看下 this.WrapPanel1 和 this.WrapPanel1.Children 是不是 null


this.WrapPanel1是null。但是我在前台有建<WrapPanel Name="WrapPanel1"></WrapPanel>

是不是因……
[/Quote]
代码是不是放在构造函数,并且在 InitializeComponent 之上? 如果是,放到 InitializeComponent 下面去
Joanna_yan 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

断点 this.WrapPanel1.Children.Add(tbl); 在这行,执行到那,看下 this.WrapPanel1 和 this.WrapPanel1.Children 是不是 null
[/Quote]

this.WrapPanel1是null。但是我在前台有建<WrapPanel Name="WrapPanel1"></WrapPanel>

是不是因为这个WrapPane在ScrollViewer的Grid中的原因?

Joanna_yan 2012-06-20
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

你WrapPanel的Name叫什么,就写this.你WrapPanel的name属性。在后边!Children.Add。。。。
[/Quote]
WrapPanel的Name叫WrapPanel1
__天涯寻梦 2012-06-19
  • 打赏
  • 举报
回复
断点 this.WrapPanel1.Children.Add(tbl); 在这行,执行到那,看下 this.WrapPanel1 和 this.WrapPanel1.Children 是不是 null
Joanna_yan 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
在窗体的构造函数里
for (int i = 1; i <= 100; i++)
{
var tbl = new Table();
tbl.Index = i;
this.wrapPanel1.Children.Add(tbl);
}
[/Quote]

var btnName = new[] { "table1", "table2", "table3","table4","table5","table6","table7","table8","table9","table10" };
for (int i = 1; i <= 10; i++)
{
Table tbl = new Table();
tbl.Index = i;
tbl.Name = btnName[i];
this.WrapPanel1.Children.Add(tbl);
}

这里说this.WrapPanel1.Children.Add(tbl);这行未将对象引用设置到对象的实例。怎么解决啊?
__天涯寻梦 2012-06-19
  • 打赏
  • 举报
回复
假设用户控件类名为 Table,首先在 Table 中添加一个属性
public int Index
{
// 给 TextBlock 赋上桌子编号
set { this.textBlock.Text = value.ToString(); }
}
在窗体的构造函数里
for (int i = 1; i <= 100; i++)
{
var tbl = new Table();
tbl.Index = i;
this.wrapPanel1.Children.Add(tbl);
}
Joanna_yan 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
用户控件不要用拖的,在后台代码中添加,100桌就循环100次,桌子的编号就是索引了
[/Quote]

我这个控件因为要用ScrollViewer滚动窗口,所以是放在一个WrapPanel中的,怎么在后台代码中添加用户控件呢?还有索引是什么,怎么用呢?

__天涯寻梦 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
引用 2 楼 的回复:

你首先创建一个UserControl,里面包含一个图片和一个TextBlock

然后你通过拖拽一个该控件时,就创建一个该对象,然后使用一个全局变量,来记录创建的次数,来给你的TextBlock赋值。


额,我比较菜。。。想请教一下,创建次数怎么统计啊?
[/Quote]
用户控件不要用拖的,在后台代码中添加,100桌就循环100次,桌子的编号就是索引了
Joanna_yan 2012-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你首先创建一个UserControl,里面包含一个图片和一个TextBlock

然后你通过拖拽一个该控件时,就创建一个该对象,然后使用一个全局变量,来记录创建的次数,来给你的TextBlock赋值。
[/Quote]

额,我比较菜。。。想请教一下,创建次数怎么统计啊?
暖枫无敌 2012-06-18
  • 打赏
  • 举报
回复
你首先创建一个UserControl,里面包含一个图片和一个TextBlock

然后你通过拖拽一个该控件时,就创建一个该对象,然后使用一个全局变量,来记录创建的次数,来给你的TextBlock赋值。
暖枫无敌 2012-06-18
  • 打赏
  • 举报
回复
使用循环控制TextBlock的值就行了

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧