1

在此处输入图像描述当用户在文本框中输入时被包裹文本所困扰,使用“MaxWidth 来控制文本框并包裹文本但它缩小了文本框的大小。我不确定我必须如何拉伸它,即使我正在使用 HorizantalAlignment =" Stretch”,但它与其他文本框不匹配。

如果我不换行文本,那么如果文本大于文本框,则整个网格都会移动,这是否可以修复大小并换行。

这是我的 xaml 代码

  <DockPanel Grid.Row="1">
            <Grid Name="gLeftContent" Grid.Row="0" Background="Transparent" >
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="30*"/>
                    <ColumnDefinition Width="30*"/>
                    <ColumnDefinition Width="30*"/>
                    <ColumnDefinition Width="10*"/>
                </Grid.ColumnDefinitions>
                <Grid.RowDefinitions>
                    <RowDefinition Height="25" />
                    <RowDefinition Height="25" />
                    <RowDefinition Height="25" />
                    <RowDefinition Height="30" />
                    <RowDefinition Height="20"/>
                    <RowDefinition Height="25" />
                    <RowDefinition Height="25" />
                    <RowDefinition Height="25" />
                    <RowDefinition Height="25" />
                    <RowDefinition Height="0"/>
                    <RowDefinition Height="25" />
                    <RowDefinition Height="25" />
                    <RowDefinition Height="25" />
                    <RowDefinition Height="0" />
                    <RowDefinition Height="25" />
                    <!-- Row 14 -->
                    <RowDefinition Height="25" />
                </Grid.RowDefinitions>

                <TextBox 
                Name="tbName" 
                Text="{Binding SelectedStory.Slug, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True, NotifyOnValidationError=True, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{StaticResource ErrorTemplate}" 
                Width="{Binding ActualWidth, ElementName=tbName}"   **//used ActualWidth but it shrinks the text box and doesn't match with the other text box.**
                Grid.Column="1" 
                Grid.Row="5" 
                TextWrapping="Wrap" 
                d:LayoutOverrides="Height" 
                Grid.ColumnSpan="2" 
                HorizontalAlignment="Stretch" 
                LostFocus="tbSlug_LostFocus"
                >
                 <TextBox 
                Name="tbHeadline" 
                Text="{Binding SelectedStory.Headline, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True, NotifyOnValidationError=True, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{StaticResource ErrorTemplate}" 
                Grid.Column="1"  
                Grid.Row="6" 
                TextWrapping="Wrap" 
                d:LayoutOverrides="Height" 
                Grid.ColumnSpan="2" 
                HorizontalAlignment="Stretch" 
                LostFocus="tbHeadline_LostFocus" 
                 />
                </TextBox>
                <ItemsControl 
                Grid.Column="1" 
                Grid.Row="14" 
                Grid.RowSpan="2" 
                Grid.ColumnSpan="2" 
                cal:RegionManager.RegionName="{x:Static inf:RegionNames.MetadataGenerateImagesRegion}"/>
            </Grid>
        </DockPanel>

提前致谢。

4

3 回答 3

1

让我们从一个干净的答案重新开始:

        <TextBox Name="tbName"  
        Text="{Binding SelectedStory.Slug, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True, NotifyOnValidationError=True, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{StaticResource ErrorTemplate}"  
        Width="Auto" Height="Auto"
        HorizontalAlignment="Stretch"  VerticalAlignment="Stretch"
        Grid.Column="1"  Grid.Row="5"  Grid.ColumnSpan="2"
        TextWrapping="Wrap"  AcceptsReturn="True"  
        LostFocus="tbSlug_LostFocus" > 

请在您的代码中完全替换它以避免任何遗漏。

于 2012-05-05T07:19:36.840 回答
1

您需要设置 RowDefinition Height="Auto" 它可以增长以适应其他行。

绝对不应该将宽度绑定到自身。

尝试

 <TextBox 
            Name="tbName" 
            Text="{Binding SelectedStory.Slug, UpdateSourceTrigger=PropertyChanged, ValidatesOnExceptions=True, NotifyOnValidationError=True, ValidatesOnDataErrors=True}" Validation.ErrorTemplate="{StaticResource ErrorTemplate}" 
            Grid.Column="1" 
            Grid.Row="5"  
            Grid.ColumnSpan="2" 
            TextWrapping="Wrap"
            HorizontalAlignment="Stretch"
            LostFocus="tbSlug_LostFocus" />
于 2012-05-05T12:33:50.490 回答
0

尝试添加到您的文本框中:

AcceptsReturn="True"

尽管您的控件可能会显示换行的文本,但目前它无法接受输入键击。

于 2012-05-05T05:17:51.843 回答