相关疑难解决方法(0)

WPF TextBox和Scroll行为

我有个问题.我需要在ScrollViewer中托管带有控件的网格,以防止文本框在UI处被截断或折叠为零.另外,当用户更改窗口宽度时,我希望扩展文本框的内容.我将Window的内容设置为以下代码

<DockPanel>
    <TreeView DockPanel.Dock="Left" Width="150"/>
    <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
            </Grid.RowDefinitions>
            <TextBlock Text="Name" 
                       Margin="5" 
                       VerticalAlignment="Center"/>
            <TextBox Grid.Column="1"
                     Text="Some Name"
                     Margin="5"
                     VerticalAlignment="Center"
                     MinWidth="200"/>
        </Grid>
    </ScrollViewer>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)

一切正常,但是当用户在TextBox中键入非常长的文本时,它将被展开并显示水平滚动.是否有任何简单的方法来限制TextBox的最大宽度,并允许仅在用户更改窗口大小时才展开它.

wpf controls panels

11
推荐指数
1
解决办法
2万
查看次数

WPF:TextBox扩展与周围的网格,但不与文本

我在应用程序中遇到TextBox问题...

窗口有一个带两列的网格.左列包含一个具有恒定宽度但具有适应高度的控件.右列包含一个TextBox,它占用Grid中的所有剩余空间(从而占用Window).

Grid具有最小的宽度和高度,并包含在ScrollViewer中.如果用户将窗口的大小调整为小于Grid的最小widht/height,则会显示滚动条.

这正是我想要的.但是,当用户开始键入文本时会出现问题.如果文本要长到适合TextBox中的一行,我希望文本换行.因此我在TextBox上设置了TextWrapping ="Wrap".但由于TextBox具有自动宽度并且包含在ScrollViewer中(实际上是包裹的整个Grid),因此TextBox只是向右扩展.

如果窗口展开,我确实希望TextBox扩展,但我不希望TextBox按文本扩展.而是文本应该包装在可用的TextBox中.如果文本不适合TextBox高度,则应在TextBox中显示滚动条.

有没有办法实现这个目标?

下面是一些显示我的问题的代码.

<Window x:Class="AdaptingTextBoxes.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="300" Width="400" Background="DarkCyan">
<Grid Margin="10" Name="LayoutRoot">
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Grid MinWidth="300" MinHeight="200">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="auto" />
                <ColumnDefinition Width="*" />
            </Grid.ColumnDefinitions>

            <Button Grid.Column="0" Margin="0,0,10,0" Content="Button" Width="100" />

            <TextBox Grid.Column="1" AcceptsReturn="True" TextWrapping="Wrap" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto" />
        </Grid>
    </ScrollViewer>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

wpf xaml textbox autosize

11
推荐指数
1
解决办法
5765
查看次数

标签 统计

wpf ×2

autosize ×1

controls ×1

panels ×1

textbox ×1

xaml ×1