【问题标题】:Get Event for changing width of canvas获取更改画布宽度的事件
【发布时间】:2013-06-06 14:39:46
【问题描述】:

当我在运行时改变我的画布宽度时,当我的画布宽度改变时我能得到一个事件吗?

在运行时槽中改变我的宽度:

myCanvas.width = myCanvas.width + 1;

有没有类似的事件:

private void CanvasWidthChanged(object sender, WidthChangedEventArgs e)
{

}

【问题讨论】:

标签: c# wpf events canvas


【解决方案1】:

使用 SizeChanged 事件。

myCanvas.SizeChanged += myCanvas_SizeChanged;

private void myCanvas_SizeChanged(object sender, SizeChangedEventArgs e)
{

}

【讨论】:

    【解决方案2】:

    您应该可以使用SizeChanged 事件。

    事件 args 中有一个 WidthChanged 属性,您可以使用它来查看宽度是否发生了变化。

    【讨论】:

    • Mhh 奇怪,如果我在 XAML 中执行它没有反应,但如果我在 myCanvas.SizeChanged += myCanvas_SizeChanged; 等后面的代码中执行它有活动
    • 你确定吗?如果您添加 xaml 代码(不介意智能感知),它是否仍然有效?
    【解决方案3】:

    您可以创建自己的继承自 Canvas 的类,并在此类中更改大小。类似的东西

    public class DXFCanvas : Canvas
    {
        protected override void OnRenderSizeChanged(SizeChangedInfo sizeInfo)
        {
            base.OnRenderSizeChanged(sizeInfo);
    
            // Your action ...
            // (SizeChangedInfo contains old and new size)
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-01
      • 2017-04-07
      • 1970-01-01
      • 2022-10-19
      • 2018-06-21
      • 2015-03-30
      • 2020-06-24
      相关资源
      最近更新 更多