Rya*_*yan 10 wpf grid textbox autosize
我的视觉树中有一个文本框如下..
Window
Grid
ListBox
ItemTemplate
DataTemplate
Grid
Grid
Textbox... <TextBox Height="Auto"
Text="{Binding Path=LyricsForDisplay}"
MinHeight="50"
MaxHeight="400"
Visibility="Visible"
VerticalScrollBarVisibility="Auto"
IsReadOnly="True"
AllowDrop="False"
TextWrapping="WrapWithOverflow">
</TextBox>
Run Code Online (Sandbox Code Playgroud)
当长文本添加到绑定变量(LyricsForDisplay)时,列表框中的所有项目都会展开它们的文本框/网格宽度,以便在使用出现的底部的滚动条时可以看到整个字符串...
我想做的是让它如此框/网格只有在用户拉伸窗口时才会调整大小..不是在输入长文本时(它可能只是环绕......)
有谁知道如何获得功能?
以下作品:
<ListBox Name="ListBox1"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid>
<TextBox TextWrapping="Wrap"></TextBox>
</Grid>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Run Code Online (Sandbox Code Playgroud)
注意使用ScrollViewer.HorizontalScrollBarVisibility="Disabled"和TextWrapping="Wrap".
东西需要contrain提供给文本框的水平宽度,你要停止这种情况下,ListBox从水平方向无限增长:
<ListBox HorizontalScrollBarVisibility="Disabled"
Run Code Online (Sandbox Code Playgroud)
不幸的是,常规TextBox不允许自动调整大小以适应父级,但是当文本不合适时不允许自动调整大小。
若要解决此问题,您可以使用自定义的文本框,该文本框报告所需的(0,0)大小。这是一个丑陋的骇客,但确实有效。
在您的.xaml.cs文件中:
public class TextBoxThatDoesntResizeWithText : TextBox
{
protected override Size MeasureOverride(Size constraint)
{
return new Size(0, 0);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在您的.xaml文件中:
<Window x:Class="YourNamespace.YourWindow"
...
xmlns:local="clr-namespace:YourNamespace">
...
<local:TextBoxThatDoesntResizeWithText Height="Auto"
Text="{Binding Path=LyricsForDisplay}"
MinHeight="50"
MaxHeight="400"
Visibility="Visible"
VerticalScrollBarVisibility="Auto"
IsReadOnly="True"
AllowDrop="False"
TextWrapping="WrapWithOverflow">
</local:TextBoxThatDoesntResizeWithText>
...
</Window>
Run Code Online (Sandbox Code Playgroud)
尝试在文本框中设置MaxWidth属性
<TextBox Height="Auto" Text="{Binding Path=LyricsForDisplay}" MinHeight="50" MaxHeight="400" Visibility="Visible" VerticalScrollBarVisibility="Auto" MaxWidth="100" IsReadOnly="True" AllowDrop="False" TextWrapping="WrapWithOverflow"> </TextBox>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10995 次 |
| 最近记录: |