我的可视化树中有一个文本框,如下所示..
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>
当长文本添加到绑定变量(LyricsForDisplay)时,列表框中的所有项目都会扩展其文本框/网格宽度,以便在使用底部显示的滚动条时可以看到整个字符串... < / p>
我想做的是使框架/网格仅在用户拉伸窗口时调整大小..不是在输入长文本时(它可能只是环绕......)
有谁知道如何获得这些功能?
答案 0 :(得分:9)
以下作品:
<ListBox Name="ListBox1"
ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Grid>
<TextBox TextWrapping="Wrap"></TextBox>
</Grid>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
请注意使用ScrollViewer.HorizontalScrollBarVisibility="Disabled"
和TextWrapping="Wrap"
。
答案 1 :(得分:5)
Something 需要包含文本框可用的水平宽度,在这种情况下,您希望阻止ListBox
无限期地水平增长:
<ListBox HorizontalScrollBarVisibility="Disabled"
答案 2 :(得分:4)
不幸的是,常规TextBox不允许autoresize适合父级,但是当文本不适合时不会自动调整大小。
要解决此问题,您可以使用报告所需(0,0)大小的自定义TextBox。这是一个丑陋的黑客,但它确实有效。
在.xaml.cs文件中:
public class TextBoxThatDoesntResizeWithText : TextBox
{
protected override Size MeasureOverride(Size constraint)
{
return new Size(0, 0);
}
}
然后,在.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>
答案 3 :(得分:1)
<Border x:Name="b" Margin="5"/>
<TextBox Height="Auto"
Text="{Binding Path=LyricsForDisplay}"
MinHeight="50"
Width="{Binding ActualWidth, ElementName=b}"
Height="{Binding ActualHeight, ElementName=b}"
Visibility="Visible"
VerticalScrollBarVisibility="Auto"
IsReadOnly="True"
AllowDrop="False"
TextWrapping="Wrap">
</TextBox>
答案 4 :(得分:0)
尝试在文本框中设置 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>