9

ScrollViewerコンテナーの全幅に伸びる水平の破線を描画する必要があるレイアウトが に含まれています。私が管理した最も近いものは次のとおりです

<ScrollViewer HorizontalScrollBarVisibility="Auto">
    <StackPanel>
        <Button Width="400" Height="50" VerticalAlignment="Top" Margin="10" />
        <Line HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Stroke="Black"
              X2="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"
              StrokeDashArray="2 2" StrokeThickness="1" />
    </StackPanel>
</ScrollViewer>

見栄えの良いサンプル

これはほぼ機能しますが、コンテナー (私の場合はウィンドウ) が拡大されると、コンテナーのサイズが縮小されても、線は適切なサイズに縮小されません。以下は、ウィンドウを水平方向に上下にサイズ変更した後の同じウィンドウのスクリーンショットです。

ウィンドウのサイズを拡大および縮小した後のサンプルのスクリーンショット

線が破線であるという事実は、線を引き伸ばすことを含む解決策が機能しないことを意味するため、重要であることに注意してください (破線が引き伸ばされて表示されます)。

これはX2="{Binding ActualWidth, RelativeSource={RelativeSource Self}}"バインディングが原因であることはわかっています (設計上、行は常にスクロール可能な領域で最も幅が広いため、ウィンドウのサイズをスクロール可能な領域に合わせると、行がスクロール可能な領域の幅を定義します)。解決策を考えます。

この問題を解決するにはどうすればよいですか?


ViewportWidth使用が機能しない理由のスクリーンショット

ViewportWidth の使用が機能しない理由のスクリーンショット

4

2 に答える 2

8

左揃えの Canvas に非常に長い Line を 0WidthClipToBounds設定して配置することができfalseます。

<ScrollViewer HorizontalScrollBarVisibility="Auto">
    <StackPanel>
        <Button Width="400" Height="50" VerticalAlignment="Top" Margin="10" />
        <Canvas HorizontalAlignment="Left" Width="0" ClipToBounds="False">
            <Line Stroke="Black" StrokeDashArray="2 2" X2="10000"/>
        </Canvas>
    </StackPanel>
</ScrollViewer>
于 2013-05-15T10:25:22.527 に答える