今天做东西的时候,发现有一个现成的容器是ContentControl,可是自己没有看过,查一下msdn吓了一调,发现什么都有,可是自己做了一个鼠标点击的事件,却没有响应,后来发现上一个virtual的方法。
后来看到一个知道的回答中说可以用一个Content的来给它加一些内容,心想这不是我想要的吗?
可是后来发现我加了一个label进去,没有设置宽高,自动充满了,没有办法了,设置一下方向与宽高,想加两个呢,只能加一个容器,可是自己没有办法,对两个分别的控制啊。
以致在后来的改变外观的时候,我只能遍历了所有的content里面的全部内容。
还好实现了。好险,发现这样的编程没有一点安全感。
for (int i = 0; i < ListRegion.Count; i++)
{
Grid gridTemp = new Grid();
gridTemp = (Grid)ListRegion[i].UIE.Content;
foreach (UIElement element in gridTemp.Children)
{
Label labtemp = (Label)element;
if (labtemp.Content.ToString() == "?" || labtemp.Content.ToString() == flagSelect)
{
labtemp.Content = "x";
labtemp.Visibility = System.Windows.Visibility.Hidden;
}
}
ListRegion[i].CurrentSelectResult = false;
}
以上就是我遍历的代码
下面是一个容器的生成 。
//编号
Label txtflag = new Label();
txtflag.Height = 40;
txtflag.Width = 40;
txtflag.HorizontalAlignment = HorizontalAlignment.Left;
txtflag.VerticalAlignment = VerticalAlignment.Top;
txtflag.Content = flagCount.ToString();
//标志
Label lbl1 = new Label();
lbl1.Height = 40;
lbl1.Width = 40;
lbl1.HorizontalAlignment = HorizontalAlignment.Right;
lbl1.VerticalAlignment = VerticalAlignment.Top;
string flagSelect = "√";
lbl1.Content = "?";
lbl1.Foreground = Brushes.Red;
lbl1.Visibility = System.Windows.Visibility.Hidden;
gird1.Children.Add(txtflag);
gird1.Children.Add(lbl1);
之后就是一些逻辑的操作了,可是发现设计不清楚的东西。自己理解不清楚的东西。做起来更难。

在使用WPF的ContentControl时,遇到点击事件无响应的问题,通过查阅资料发现需要重写虚拟方法。ContentControl可以添加内容,但未设置宽高时会自动填充。在尝试添加多个元素时,需要容器来组织,并且直接操作内部元素较为复杂,需要遍历所有内容。这带来了编程上的挑战,但最终实现了预期效果。
4万+

被折叠的 条评论
为什么被折叠?



