我有一个包含在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
不起作用
的
3条答案
按热度按时间brjng4g31#
我意识到我需要的是
Line
在layout的测量步骤中要求零空间,但随后在排列步骤中使用所有可用空间。我偶然发现了问题Make WPF/SL grid ignore a child element when determining size,它引入了使用包含此逻辑的自定义装饰器的方法。字符串
(我希望一些现有的布局控制合并了这种逻辑,以避免编写自己的布局逻辑,但是这里的逻辑非常简单,我并不感到大惊小怪)。
型
这工程完美
w46czmvw2#
您可以在左对齐的画布中放置一条很长的线,
Width
为零,ClipToBounds
设置为false
。字符串
huus2vyu3#
您可以使用路径而不是直线。这将生成一条大小与容器宽度相同的水平线。
第一个月