当用户在文本框中输入时,用文本框包围文本,使用“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>
先谢谢。
答案 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"
虽然您的控件可能会显示包装文本,但目前无法接受输入击键。