Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如果内容合适,禁用ScrollViewer VerticalScrollBarVisible_Wpf_Xaml_Windows Phone 8 - Fatal编程技术网

Wpf 如果内容合适,禁用ScrollViewer VerticalScrollBarVisible

Wpf 如果内容合适,禁用ScrollViewer VerticalScrollBarVisible,wpf,xaml,windows-phone-8,Wpf,Xaml,Windows Phone 8,我目前正在编写我的第一个Windows Phone(8)应用程序,这也是我的第一个Xaml应用程序。因此,我很可能只是自己没有找到解决问题的方法,因为我不知道该向谷歌提供哪些词汇。我试过了,但没发现有用的东西。我找到了一个,但没有帮助: 以下是我的XAML的重要部分: <ScrollViewer VerticalScrollBarVisibility="Auto"> <StackPanel VerticalAlignment="Top"> &l

我目前正在编写我的第一个Windows Phone(8)应用程序,这也是我的第一个Xaml应用程序。因此,我很可能只是自己没有找到解决问题的方法,因为我不知道该向谷歌提供哪些词汇。我试过了,但没发现有用的东西。我找到了一个,但没有帮助:

以下是我的XAML的重要部分:

<ScrollViewer VerticalScrollBarVisibility="Auto">
    <StackPanel VerticalAlignment="Top">
         <TextBlock x:Name="InfoText" TextWrapping="Wrap" VerticalAlignment="Top" Text="VersionInfoText"/>
    </StackPanel>
</ScrollViewer>

我将以编程方式更改文本块
InfoText
的内容。文本可能足够短,完全适合,也可能相当长。这就是我将它嵌入ScrollViewer的原因。(顺便说一下,稍后将有更多控件添加到StackPanel。)

如果ScrollViewer无法进一步滚动,则会产生这些“超盎司”效果。如果文本很大,这很好,但是当没有任何东西可以滚动时,我不希望这种效果是可见的

我尝试了
VerticelScrollBarVisibility=“Disable”
,成功地禁用了效果。现在我的问题是:

根据StackPanel的高度和ScrollViewer的高度,我可以自动(通过XAML Magic)在
自动
禁用
之间切换吗


我希望
Auto
能起到作用,但事实并非如此(在VS2013模拟器WVGA中进行了测试)。

您可以根据cs代码中的InfoText长度动态将SetVerticalScrollBarVisibility设置为Disabled

if(InfoText.Length() >n)
{
    ScrollViewer.SetVerticalScrollBarVisibility(scrollViewer, ScrollBarVisibility.Auto);
}
else
{
   ScrollViewer.SetVerticalScrollBarVisibility(scrollViewer, ScrollBarVisibility.Disabled);
}

您可以检查
TextBlock
高度是否大于
ScrollViewer
height

在xaml中:

        <ScrollViewer x:Name="TestScrollViewer">

            <TextBlock x:Name="InfoText"
                       Text="Information"
                       TextWrapping="Wrap"
                       VerticalAlignment="Top" />

        </ScrollViewer>
    public MainPage()
    {
        InitializeComponent();

        Loaded += (sender, args) =>
        {
            TestScrollViewer.IsEnabled = InfoText.ActualHeight > TestScrollViewer.ActualHeight;

            // OR

            TestScrollViewer.VerticalScrollBarVisibility = InfoText.ActualHeight > TestScrollViewer.ActualHeight
                ? ScrollBarVisibility.Visible
                : ScrollBarVisibility.Disabled;
        };
    }

尝试将此属性添加到您的
ScrollViewer

VerticalScrollMode="Auto"
同时尝试禁用
水平滚动模式
水平滚动条可见性
属性


如果这不起作用,请告诉我。然后,我将不得不制作一个示例应用程序,看看我是否可以让它为您工作。现在我只是在猜测。试试看。

在VS2013中设置
VerticalScrollBarVisibility=“Auto”
对我很有用。

谢谢你的建议。我将在本周晚些时候进行尝试,并发布我的答案。使用VerticalScrollMode会在VS2013中报告以下错误:“VerticalScrollMode”成员无法识别或无法访问。“好的。这是一个代码隐藏的解决方案。是否有可能完全在xaml中表述这样的内容?我以前见过一些奇怪的带有条件格式的xaml。