c# - WPF StackPanel 项目应该重复自己
问题描述
我在 C# WPF 的运行时向堆栈面板添加按钮。我想要的是,当我最后一次滚动堆栈面板项目时,我希望它在最后一个项目之后显示第一个项目,这样它就会不断重复列表。
<ScrollViewer VerticalScrollBarVisibility="Hidden" CanContentScroll="True" HorizontalScrollBarVisibility="Hidden"
Name="SVMenu" Margin="-2,45,2,39" Grid.RowSpan="3">
<StackPanel x:Name="stackpanel_Menu1">
</StackPanel>
</ScrollViewer>
这是创建按钮的代码。
DataTable dt = db.VIEW_MENUS();
foreach (DataRow dr in dt.Rows)
{
Button Btn = new Button();
Label LB = new Label();
Btn.Content = dr[1].ToString();
Object obj = dr["MENUIMAGE"];
if (obj != null)
{
try
{
ImageBrush BtnBrush = new ImageBrush();
using (MemoryStream stream = new MemoryStream((byte[])obj))
{
BtnBrush.ImageSource = BitmapFrame.Create(stream,
BitmapCreateOptions.None,
BitmapCacheOption.OnLoad);
}
//// Use the brush to paint the button's background.
Btn.Background = BtnBrush;
}
catch (Exception)
{
}
}
Btn.Tag = dr["MENUID"];
Btn.Click += btn1_Click;
Style style = this.FindResource("CircleButton") as Style;
Btn.Style = style;
Btn.Width = 85;
Btn.Height = 85;
Btn.HorizontalAlignment = HorizontalAlignment.Center;
Btn.Margin = new Thickness(0,2,0,0.1);
//an(Btn);
LB.Foreground = Brushes.White;
LB.FontWeight = FontWeights.Bold;
LB.Content = dr["MENUTITLE"];
LB.HorizontalAlignment = HorizontalAlignment.Center;
StackPanel stackpanel_Menu = new StackPanel();
stackpanel_Menu.Children.Add(Btn);
stackpanel_Menu.Children.Add(LB);
stackpanel_Menu1.Children.Add(stackpanel_Menu);
所以它向 Stackpanel 添加了 15 个按钮,我可以垂直看到它们。当我可以滚动到最后一个第 15 个按钮时,我希望它再次显示第一个按钮并继续向下滚动,而不是结束滚动。
解决方案
这在 WPF 中不可用
要么找到第 3 方控件,要么编写自己的实现。
推荐阅读
- grib - grib1:如何提取子区域数据
- json - 使用模式验证在 pyspark 中加载 geoJSON
- java - java中的编码组合
- web-crawler - 供稿的搜索控制台服务器错误
- java - Spring Roo 生成未知领域模型
- .net - 简化两个 Get web-services 非常相似
- jupyter-notebook - 如何从 jupyter 中加载笔记本
- java - 在外部类之外使用类型化的内部类时,了解“格式不正确的类型,在原始类型上给出的类型参数”
- dart - pubspec 中的颤振密码
- javascript - Express-session 会在一段时间后停止保存会话