我现在已经找了很长时间才能告诉WPF控件(或窗口)保持一定的宽高比。
Window
我发现的this解决方案,效果非常好。但是因为它使用Win32 API和窗口句柄,所以它不适用于任何WPF Control
(因为据我所知,在WPF中只有窗口本身有句柄)。Control
,通常会获得将Control
放入ViewBox
的建议,但我不想扩展我的控件,我希望它们调整大小(并保持任何边框宽度或字体大小)。Control
的其他“解决方案”涉及Width
与ActualHeight
或Height
与ActualWidth
的任何形式的约束,或使用SizeChanged
事件,但这会导致重新调整时出现大量闪烁,并且不太可靠。
如果将Width
绑定到ActualHeight
,则无法仅调整Width
(通过拖动右边框),因为ActualHeight
不会更改。
如果事件在宽度和高度同时变化时变得棘手,那么你必须改变SizeChanged
事件中的大小......我是否提到了闪烁?经过大量的阅读和搜索后,我得出的结论是强制任何控件保持一定宽高比的最佳方法是在Measure
和Arrange
函数中执行此操作。< / p>
我找到了this解决方案,它使用重写的Decorator
和Measure
函数创建了Measure
控件,但这意味着要放置任何可以保持其宽高比的控件在它自己的Decorator
里面。如果必须的话,我可以忍受,但我想知道是否有更好的方法。
所以,这是我的问题。是否可以创建附加属性Ratio
和附加属性KeepRatio
,并以某种方式覆盖Measure
中相关控件的Arrange
和OnKeepRatioChanged
函数和所附属性的RatioChanged
回调?
答案 0 :(得分:0)
如果要覆盖排列/测量方法,则无需附加属性。这个包装器应该没问题:
SELECT FORMAT(GetDate(), 'yyyy-MM-dd')