Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF如果scrollviewer的子级调整大小,scrollviewer会自动更新其范围吗?_C#_Wpf_Xaml_Scrollviewer - Fatal编程技术网

C# WPF如果scrollviewer的子级调整大小,scrollviewer会自动更新其范围吗?

C# WPF如果scrollviewer的子级调整大小,scrollviewer会自动更新其范围吗?,c#,wpf,xaml,scrollviewer,C#,Wpf,Xaml,Scrollviewer,所以我的第一个问题是scrollviewer是否会自动更新其范围,或者我是否需要调用scrollviewer上的invalidate measure来强制更新它 无论如何,我有一个滚动查看器,里面有一个图形。当我使用缩放选择框时,我希望轴分割单位改变,scrollviewer的内容改变,scrollviewer重新计算其新范围,最后滚动到正确的偏移量 目前,我将AxisDivisionUnit作为一个依赖属性,它在更新时使内容无效,然后重新测量内容并重新绘制 sg.Invalid

所以我的第一个问题是scrollviewer是否会自动更新其范围,或者我是否需要调用scrollviewer上的invalidate measure来强制更新它

无论如何,我有一个滚动查看器,里面有一个图形。当我使用缩放选择框时,我希望轴分割单位改变,scrollviewer的内容改变,scrollviewer重新计算其新范围,最后滚动到正确的偏移量

目前,我将AxisDivisionUnit作为一个依赖属性,它在更新时使内容无效,然后重新测量内容并重新绘制

        sg.InvalidateMeasure();
        sg.UpdateLayout();
        sg.DrawSignal();
在另一节课上

           AxisDivisionUnit = NewAxisDivisionUnit;

          //need to scroll to new position based on location chosen with zoombox
          //calculate position of originalOffsetinTimescaleunits on new scale.
          double NewNumberOfPixelsPerUnit = (double)(NUMBER_OF_DEVICE_INDEP_PIXELS_PER_INCH) / AxisDivisionUnit;
          double NewPixelOffset = HorizontalUnitOffset * NewNumberOfPixelsPerUnit;
          if (NewPixelOffset > sv.ExtentWidth)
          {
            NewPixelOffset = sv.ExtentWidth - sv.ViewportWidth;
          }
          sv.ScrollToHorizontalOffset(NewPixelOffset);

但是,scrollviewer范围在我希望滚动的时候还没有更新,所以代码没有按照我的意愿运行。我想我也可以在这里调用scrollviewer上的invalidatemeasure,但是如何确保AxisDivision已经更改?我需要确保,因为内容的大小取决于属性。

嗨,我遇到了同样的问题,在检查scrollviewer.extent属性之前,我通过调用scrollviewer控件的updateLayout方法解决了这个问题


我希望这会有所帮助。

在代码隐藏中操作UI元素时,布局计算总是很棘手,但您可以将PropertyChanged事件附加到AxisDivision DependencyProperties元数据