C#WPF在Stackpanel中添加滚动条 [英] C# WPF Adding scroll bar in Stackpanel

查看:71
本文介绍了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 the Stackpanel inside a ScrollViewer.

<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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆