我有一种情况,ScrollViewer
在基类 ( Window
) 中设置并且我的用户控件被动态添加为窗口的内容。现在,我希望将ToolBar
用户控件中的一个控件 ( ) 排除在滚动之外(以保持在顶部可见)。我知道类上有一个属性HandlesScrolling
,Control
但它是内部的。我无法将工具栏放在外面,ScrollViewer
因为我无权访问它。有没有办法做到这一点?
问问题
380 次
1 回答
1
我能想到的唯一方法是让你的控件大小自己到外部ScrollViewer
,然后有自己的内部ScrollViewer
来处理滚动。下面有一些示例代码,但关键是将Height
您的控件绑定到ActualHeight
外部控件,ScrollerViewer
如下所示:Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type ScrollViewer}}}"
外滚动查看器:
<ScrollViewer>
<ListBox:HandlesItsOwnScrolling />
</ScrollViewer>
您的控制:
<UserControl x:Class="ListBox.HandlesItsOwnScrolling"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300" Height="{Binding Path=ActualHeight, RelativeSource={RelativeSource AncestorType={x:Type ScrollViewer}}}" >
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Grid.Row="0">Toolbar</Button>
<ScrollViewer Grid.Row="1">
<Border Background="AliceBlue" Height="1000" />
</ScrollViewer>
</Grid>
</UserControl>
于 2012-11-06T15:14:47.493 回答