C#WPF在Stackpanel中添加滚动条 [英] C# WPF Adding scroll bar in Stackpanel
本文介绍了C#WPF在Stackpanel中添加滚动条的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的滚动条未显示在堆栈面板上,这是我的XML代码
my scroll bar isn''t showing up on the stackpanel this is my XML code
<StackPanel Height="166" HorizontalAlignment="Left" Margin="325,1,0,0" Name="SP1" VerticalAlignment="Top" Width="620" Orientation="Horizontal" CanHorizontallyScroll="True" ForceCursor="False" SnapsToDevicePixels="True" OverridesDefaultStyle="True">
<StackPanel.ScrollOwner>
<ScrollViewer HorizontalContentAlignment="Center" CanContentScroll="True" PanningMode="HorizontalOnly" SnapsToDevicePixels="True" HorizontalScrollBarVisibility="Visible" DataContext="{Binding}">
<ScrollViewer.Background>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="Red" Offset="1" />
</LinearGradientBrush>
</ScrollViewer.Background>
</ScrollViewer>
</StackPanel.ScrollOwner>
</StackPanel>
这是我添加项目时的代码
and this is my code when i add the items
private void button1_Click(object sender, RoutedEventArgs e)
{
DateTime dt1 = Convert.ToDateTime(label1.Content + "/" + label2.Content + "/" + label5.Content);
DateTime dt2 = Convert.ToDateTime(label3.Content + "/" + label4.Content + "/" + label6.Content);
TimeSpan ts = dt2-dt1 ;
int days = ts.Days;
label14.Content = ts.Days;
for (int i = 0; i < ts.Days; i++)
{
TextBlock TXB = new TextBlock();
TXB.Background = new LinearGradientBrush(Colors.Red, Colors.LightCyan, new Point(0, 0), new Point(1, 1));
TXB.Text = i.ToString();
TXB.Width = 30;
TXB.Name = "T" + i.ToString();
this.SP1.Children.Add(TXB);
}
滚动条没有显示出来时,有人可以帮我吗?
and when it goes over the scroll bar doesn''t show up, can anyone help me?
推荐答案
将Stackpanel
放在ScrollViewer
内怎么样.
How about putting theStackpanel
inside aScrollViewer
.
<ScrollViewer HorizontalContentAlignment="Center" CanContentScroll="True" PanningMode="HorizontalOnly" SnapsToDevicePixels="True" HorizontalScrollBarVisibility="Visible" DataContext="{Binding}">
<scrollviewer.background>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="Red" Offset="1" />
</LinearGradientBrush>
</scrollviewer.background>
<stackpanel name="SP1"></stackpanel>
现在StackPanel
应该滚动.
Now the StackPanel
should scroll.
为什么要使ScrollViewer作为堆栈面板的子级.使滚动查看器成为堆栈面板的父级",然后将子元素添加到堆栈面板中
那样尝试
Why are you making ScrollViewer as a child of the stack panel. Make the scroll viewer as a Parent of the stack panel and then add the child elements to the stack panel
try like that
<ScrollViewer CanContentScroll="True" SnapsToDevicePixels="True" HorizontalScrollBarVisibility="Visible"PanningMode="HorizontalOnly" DataContext="{Binding}" Width="300">
<StackPanel Height="166" HorizontalAlignment="Left" Name="SP1" VerticalAlignment="Top" Width="620" Orientation="Horizontal" CanHorizontallyScroll="True" ForceCursor="False" SnapsToDevicePixels="True" OverridesDefaultStyle="True">
</StackPanel>
</ScrollViewer>
每当需要ScrollBar时,都可以在ScrollViewer下添加该元素.滚动条会自动出现.
Whenever you need ScrollBar, then add that element under ScrollViewer. ScrollBar will automatically come.
这篇关于C#WPF在Stackpanel中添加滚动条的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文