我有一个WPF UserControl,其作用类似于Viewport(我在下面的上下文中将其称为“viewport”)。此视口可以缩放和平移其内容(我认为缩放使用Layout-或RenderTransform来缩放内容)。基本上内容只是一个画布。此Canvas包含一些形状和一些TextBox,用于显示形状的元数据。 如果缩放系数为1,一切都很好,但如果我缩小,画布会缩小,而TextBox会导致元数据不可读,因为文本很小。
如何强制TextBoxes进行反缩放,以便它们不会在屏幕上改变大小?
我已经考虑过将视口的转换(导致缩放)传递给TextBoxes(不知何故)并将其反转应用于它们,但这对我来说似乎不对。 另一个方法是使用包含TextBoxes的Adorner。我找到了一个关于控件装配工here on Stackoverflow的主题,但我不确定这种方法是否比另一方好。
因此,如果有人得到更好的解决方案,我会很感激。
提前致谢
答案 0 :(得分:1)
有一个Transform.Inverse属性,可用于“撤消”父控件的转换。因此,您基本上将父控件绑定到MyTransform,并将所有子控件绑定到MyTransform.Inverse。这样,变换将应用于孩子的位置,而不是他们的大小。
我同意它“感觉不对”,但我很确定这是你最好的选择。