1

カスタムコントロールのISrollInfoインターフェイスの実装に取り​​組んでいます。簡単に言うと、Canvasの下のカスタムコントロールにラベルがあります。カスタムコントロールをスクロールしたときに、ラベルを「所定の位置にとどまる」ようにします。つまり、スクロールオフセットに関係なく、ラベルは常に表示される必要があります。

ここで、テストとしてこのサンプルコードを追加しました

    protected override Size MeasureOverride(Size constraint)
    {
        return new Size(1000, 50);
    }

    protected override Size ArrangeOverride(Size arrangeBounds)
    {
        double x = 50;
        double y = 50;

        label1.Arrange(new Rect(new Point(x, y), new Size(1000, 50)));
        return arrangeBounds;
    }

コントロールをテストすると(コントロールはScrollViewer内に配置されます)、ラベルは非表示になります(スクロールバーを使用する前後)。ArrangeOverrideのオーバーライドを削除すると、スクロールバーを使用しているときにラベルが表示され、スクロールします。

私が欠けているものについて何かアイデアはありますか?

4

1 に答える 1

0

見つけたのですが、私のArrangeOverrideはUserControlにあります。ここでは、特にラベルのみを配置し、キャンバスは配置されません(つまり、位置とサイズが設定されていません)。さて、ラベルがキャンバスにあるので、あなたはそれを見ることができません。

于 2012-06-12T14:06:09.600 に答える