C# WPF ViewBox缩放/大小更改事件

C# WPF ViewBox缩放/大小更改事件,c#,.net,wpf,zooming,viewbox,C#,.net,Wpf,Zooming,Viewbox,我想检测ViewBox的缩放或大小的变化,以便在其内部的控件上应用一些自定义逻辑 可以吗?您可以订阅SizeChanged活动吗 <Viewbox SizeChanged="Viewbox_SizeChanged"> </Viewbox> 请尝试以下代码: private void Viewbox_SizeChanged(object sender, SizeChangedEventArgs e) { double initialWidth = 509.0;

我想检测
ViewBox
的缩放或大小的变化,以便在其内部的控件上应用一些自定义逻辑


可以吗?

您可以订阅SizeChanged活动吗

<Viewbox SizeChanged="Viewbox_SizeChanged">

</Viewbox>
请尝试以下代码:

private void Viewbox_SizeChanged(object sender, SizeChangedEventArgs e)
{
    double initialWidth = 509.0;

    if (e.PreviousSize.Width > 0)
    {
        var factor = e.NewSize.Width / initialWidth;
        this.Title = (factor * 100).ToString();
    }
}

值509.0是初始窗口的宽度。每次调整窗口大小时,我都会计算新宽度和初始宽度之间的百分比。我想您需要订阅MouseLeftButtonUp来检测每个窗口大小调整的结束,这样您就可以保存新的宽度。

确定。请您澄清一下,当ViewBox的大小发生变化时,SizeChanged事件是否与缩放变化有关。假设ViewBox的初始状态为100%,现在我们更改ViewBox的大小。我们可以使用SizeChanged事件来计算ViewBox缩放更改的百分比吗?@Dimi,试试看
e.PreviousSize.Height/e.NewSize.Height
mmmhhh,您需要在字段中保存初始大小的值。我添加了一个新的答案来发布一些代码
private void Viewbox_SizeChanged(object sender, SizeChangedEventArgs e)
{
    double initialWidth = 509.0;

    if (e.PreviousSize.Width > 0)
    {
        var factor = e.NewSize.Width / initialWidth;
        this.Title = (factor * 100).ToString();
    }
}