【发布时间】:2021-10-19 06:31:20
【问题描述】:
我有一个用户控件将通过左上角的按钮添加填充用户控件列表(父用户控件左侧的stackPanel),
插入许多用户控件后,屏幕将滚动,并且按钮添加将不可见 如果堆栈面板可见,我想将 stackPanel 顶部的按钮移动为可见 我找到了这个IsUserVisible 来检查按钮是否可见并且如果我从另一个按钮调用它是否可以工作,但我想让它自动我发现this 在 LayoutUpdated 事件触发时触发,但它会触发很多。 当用户向下滚动时,使按钮在堆栈面板中可见有什么帮助吗?
添加第四个用户控件后,这将在屏幕上可见
按钮添加将不可见,我想移动到左侧 stackPanel 的可见顶部
编辑:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MaxWidth="60" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0">
<Button x:Name="BtnAddNewUserControl" VerticalAlignment="Top"
Click="BtnAdd_OnClick"/>
</Grid>
<Grid Grid.Column="1">
<StackPanel Name="StackPanelListUserControl" Orientation="Vertical">
</StackPanel>
</Grid>
</Grid>
我不想让 StackPanelListUserControl 带有滚动(高度将随着内部 userControl 的数量而变化)然后在插入许多用户控件后,窗口将滚动显示最后插入的用户控件,在这种情况下是按钮BtnAddNewUserControl 将在屏幕上不可见,
编辑(在评论之后):
在评论 BionicCode 中要求只滚动右侧部分并修复左侧部分,这是我的解释:
我展示的只是它本身在一个可以添加的用户控件中,然后我的窗口有一个 stackPanelParent 接受许多 userControlParent,每个 userControlParent 都包含我正在展示的内容,为什么我不能在这个 userControlParent 中进行滚动显示 userControlChild,窗口会有 3-4 个 userControlParent 每个会有 6-7 个 userControlChild 我在 userControlParent 的左侧有按钮 –adduserControlParent-fix,但按钮 –adduserControlChild- 在 userControlParent 中
【问题讨论】:
-
您想让堆栈面板可滚动还是只是使用 UserControls 的区域?
-
@OneTrickDragon 当屏幕上不可见时,我不会添加按钮以向下移动
-
您可能必须重组您的 XAML 代码并使用
Grid将您的控件分为可滚动和不可滚动的内容。 -
从
ScrollViewer中移动Button?请发布您的 XAML 以获得更多帮助。 -
将控件包装到自己的 Grid 中是多余的。在大型应用程序中这样做甚至会对渲染性能产生负面影响。始终尽量保持视觉树尽可能平坦。要解决您的问题,请使用 ListBox 而不是 StackPanel。您可以隐藏滚动条,但仍滚动其中的用户控件,而按钮将保持固定。关键是您正在滚动包含 Button 的完整 Grid - 这当然会将按钮移到视口之外。