Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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/8/mysql/56.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
C# 文本框在滚动视图内调整大小(带水平滚动)_C#_User Interface_Uwp_Uwp Xaml - Fatal编程技术网

C# 文本框在滚动视图内调整大小(带水平滚动)

C# 文本框在滚动视图内调整大小(带水平滚动),c#,user-interface,uwp,uwp-xaml,C#,User Interface,Uwp,Uwp Xaml,我的文本框控件有问题。 请注意ScrollViewer的 这是我的xaml: <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <ScrollViewer HorizontalScrollMode="Auto" HorizontalScrollBarVisibility="Auto"> <TextBox HorizontalAlignment="St

我的
文本框
控件有问题。 请注意ScrollViewer的

这是我的xaml:

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <ScrollViewer HorizontalScrollMode="Auto" HorizontalScrollBarVisibility="Auto">
        <TextBox HorizontalAlignment="Stretch" 
                 VerticalAlignment="Center"
                 Margin="20"
                 Text = "A short text">
        </TextBox>
    </ScrollViewer>
</Grid>

其结果是:

它看起来像预期的,如果调整窗口大小,它会很好地扩展/收缩。 到目前为止还不错,但是如果文本稍微长一点会发生什么呢

发生这种情况:

TextBox
现在会增长,以适应其中包含的文本 a) 因为有一个允许水平滚动和 b) 结果是一个非常丑陋的UI(因为右边距不可见,但滚动条可见,等等)

有人知道我如何在第一个屏幕截图中获得外观,即使文本较长(同时保留ScrollViewer)


我想为
文本框设置一个最大宽度,但它阻止了
文本框随着窗口的增长而增长,这是不可接受的。

尝试在scrollviewer上设置Padding属性,而不是边距,试试这个

    <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">">
        <ScrollViewer  HorizontalScrollBarVisibility="Auto" Padding="20,0">
            <TextBox HorizontalAlignment="Stretch" 
             VerticalAlignment="Center"
             Margin="20"
             Text = "A short text">
            </TextBox>
        </ScrollViewer>
    </Grid>
“>

在调整窗口大小时更改
文本框的
MaxWidth
属性可以解决问题。不过,我认为这不是一种干净的方法

    int margin = 40; // Set your margin

    public MainPage()
    {
        this.InitializeComponent();
        InputTextBox.MaxWidth = Window.Current.Bounds.Width - margin;
        Window.Current.SizeChanged += Current_SizeChanged;
    }

    private void Current_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
    {
        var size = e.Size;
        InputTextBox.MaxWidth = size.Width - margin;
    }

我想你可能会把
ScrollViewer
宽度
实际宽度
与它的
滚动宽度
混淆,如果你不限制
文本框的宽度
滚动宽度
将随着
文本框的宽度而增长。限制
文本框的宽度
不会解决你的问题问题

…右边距不可见,但有一个滚动条

我想你需要的是这样的东西:

xaml代码:

<ScrollViewer Margin="20" BorderBrush="Blue" BorderThickness="2" 
              HorizontalScrollMode="Auto" HorizontalScrollBarVisibility="Auto" 
              VerticalScrollBarVisibility="Hidden" VerticalScrollMode="Disabled" Height="45">
    <TextBox x:Name="tb"  HorizontalAlignment="Stretch" VerticalAlignment="Center" 
             BorderThickness="0"/>
</ScrollViewer>


您可以自定义
ScrollViewer
,使其行为类似于
文本框
,例如,当获得焦点时,将显示
边框
,或其他内容。

如果您不想滚动内容,使用
ScrollViewer
的原因是什么?请尝试将TextBox.Width绑定到ScrollViewer.ActualWidth他的主意不错