首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >应该从MeasureOverride返回多少大小?

应该从MeasureOverride返回多少大小?
EN

Stack Overflow用户
提问于 2013-12-27 07:54:16
回答 4查看 1.5K关注 0票数 1

控制中心怎么能说:我会占据父母给我的所有空间?

例如,我的控件在ScrollVewer中。它用大小来衡量我的控制(无限,无限)。我的控件显示小图表。当图表看起来仍然很好时,最小尺寸是(300,300)。最大尺寸不受限制。我的控件应该从MeasureOverride()返回多少大小?(0,0)或(300,300)?

MeasureOverride方法应该返回什么大小,当availableSize是精确的大小时,例如(1234,1235)?

这个问题与WPF和Windows 8 XAML应用程序都相关。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-12-27 08:58:58

MeasureOverride的参数为avaibleSize。如名称所示,这是控件可以使用/填充的最大大小。控件现在应该返回它以后将使用的实际大小。返回的大小可以是完全给定的大小或更小的大小(例如,控件总是绘制方块,需要更少的空间)。

这个游戏和ScrollViewer有点不同。ScrollViewer假装拥有无限的空间,并将availableSize设置为无穷大。现在要由控制方来决定它将有多大,或者它喜欢多大。但是,如果窗口太小,控件必须知道它会被滚动。顺便说一下,返回0/0意味着控件不需要任何空间。

在您的例子中,滚动图形可能不是最好的方法。lain建议的方式是解决这一问题的一种方法:将窗口的剩余空间分配给您的控件,并让您的控制范围在这些边界内。

票数 1
EN

Stack Overflow用户

发布于 2015-01-17 09:56:21

正确的解决方案实际上是在MeasureOverride中返回0大小。或者任何最小的尺寸都行。

然后将使用可用的ScrollViewer大小调用ScrollViewer。

你可以试试:

代码语言:javascript
复制
<Window x:Class="TestMeasure.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:TestMeasure"
        Title="MainWindow" Height="350" Width="525">
    <ScrollViewer>
    <local:MyTextBox Text="Hi"/>
  </ScrollViewer>
</Window>

代码语言:javascript
复制
using System.Windows;
using System.Windows.Controls;

namespace TestMeasure {
  class MyTextBox: TextBox {
    protected override System.Windows.Size MeasureOverride(System.Windows.Size constraint) {
      Size baseSize = base.MeasureOverride(constraint);
      return baseSize;
    }

    protected override System.Windows.Size ArrangeOverride(System.Windows.Size arrangeBounds) {
      Size baseSize = base.ArrangeOverride(arrangeBounds);
      return baseSize;
    }
  }
}

请注意,TextBox实际上在MeasureOverride中返回了一个大小,但是ScrollViewer仍然在排列中传递它自己的大小。

票数 2
EN

Stack Overflow用户

发布于 2013-12-27 07:59:52

也许你可以显示你的图表至少300×300的大小,并使它更大,如果你有更多的空间。您可以使用Scrollviewer的ActualWidth和ActualHeight属性来确保这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20797000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档