C# 两个控件之间的行不';重画
我有b个由code动态创建的C# 两个控件之间的行不';重画,c#,wpf,button,line,C#,Wpf,Button,Line,我有b个由code动态创建的按钮,我想在同一堆栈面板的第一个节点和最后一个节点之间画一条线。问题是,每当我调用此函数时,它都不会将第一行移动到b按钮,而是将行向右移动 我的行绘图功能代码: public void CreateALine() { redLine = new Line(); redLine.X1 = nodul_nou[0].Margin.Left ; redLine.Y1 = nodul_nou[b].Margin.Top - 40; redL
按钮
,我想在同一堆栈面板的第一个节点和最后一个节点之间画一条线
。问题是,每当我调用此函数时,它都不会将第一行移动到b按钮,而是将行向右移动
我的行
绘图功能代码:
public void CreateALine()
{
redLine = new Line();
redLine.X1 = nodul_nou[0].Margin.Left ;
redLine.Y1 = nodul_nou[b].Margin.Top - 40;
redLine.X2 = nodul_nou[b].Margin.Left ;
redLine.Y2 = nodul_nou[b].Margin.Top - 40;
SolidColorBrush redBrush = new SolidColorBrush();
redBrush.Color = Colors.Black;
redLine.StrokeThickness = 4;
redLine.Stroke = redBrush;
workplace.Children.Add(redLine);
}
注意:
结节诺[b]
是我所说的按钮,它没有在第一个按钮,结节诺[0]
和b按钮,结节诺[b]
之间划一条线,我认为有一个打字错误:红线。Y1=结节诺[b]
应该是红线
.1-aStackPanel
不是用于此目的的适当容器。你需要一张画布
或什么的。2-您不需要使用这样的过程代码在WPF中“绘制”内容,您需要创建适当的数据,并让用户界面自己处理。3-不要在WPF中的代码中创建或操作UI元素,WPF中不需要也不需要winforms方法。发布您需要的屏幕截图,我可以告诉您在WPF中执行此操作的正确方法。@HighCore,因此我应该在xaml中创建行,然后从代码中修改它?@VladFlad no.您应该创建一个正确的ViewModel,并将UI数据绑定到该ViewModel,并且可能使用ItemsControl
从ViewModel中的集合动态生成UI元素。再一次,发布一个你需要的屏幕截图,我可以告诉你在WPF中做这件事的正确方法。@VladVlad看起来真的很像某种图表设计器,你不需要任何代码来做这件事,你需要一个ItemsControl
和两个DataTemplates
。WPF与其他框架非常不同。您可以下载我的示例代码,看看它是如何工作的,这样您就可以理解在WPF中是如何完成的。