不会将文本包装在WPF的文本框中

时间:2012-05-05 05:09:18

标签: wpf xaml

enter image description here当用户在文本框中输入时,用文本框包围文本,使用“MaxWidth控制文本框并包装文本但缩小文本框大小。我不知道如何拉伸文本它,eventhoug使用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>

先谢谢。

3 个答案:

答案 0 :(得分: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" > 

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

答案 1 :(得分: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" />

答案 2 :(得分:0)

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

AcceptsReturn="True"

虽然您的控件可能会显示包装文本,但目前无法接受输入击键。