实际上,已经有一个古老而粗糙的遗留代码,控件是在 WinForms 上实现的,但是没有时间和金钱在 WPF 上重写。我们尽可能地使用它,每次我们在 WPF 中实现某种控件时,都会出现错误。
现在这个错误有点具体了。控件内部有一个控件,Label其宽度是这样计算的:
return (int) LabelControl.CreateGraphics().MeasureString(TextLabel, TextLabel.Font).Width + 40;
如果您查看 WinForms 测试应用程序,一切都很好。如果你在 WPF 中驱动一个控件,它会获取文本,如果那里有空格,它会传输文本,将其换行。
有一个hardcode选项,将字符串替换为修改后的字符串,将空格替换为任何其他字符,但这仍然是一个假设,是否有更合适和灵活的方法?
答案很简单。我只是重写了计算,添加了10个像素。为什么会出现这种行为,为什么需要添加10个像素,我猜不出来,很可能,在其他应用程序中,顺便说一句,在WinInform中,Margin挂在这个控件上.