我的Grid
包含ScrollViewer
,其中包含AccessText
。我希望AccessText
占据ScrollViewer
的整个宽度,它应该占据Grid
的整个宽度,而不会有任何溢出。目前,我的AccessText
的内容被截断在屏幕的右侧而不是包装。我已尝试将AccessText.TextWrapping
设置为Wrap
,WrapWithOverflow
,我也尝试完全删除该属性。我转而使用Grid
而不是StackPanel
,因为我认为这可能会影响内容的大小,但这并没有帮助。这就是我所拥有的:
<Grid MaxHeight="40">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Whee a label:" Grid.Column="0"/>
<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Auto">
<AccessText Text="{Binding MyLongTextField}"/>
</ScrollViewer>
</Grid>
答案 0 :(得分:1)
当您将ColumnDefinition Width设置为Auto时,其中的ScrollViewer将不受Column的“可见宽度”限制,因此它仍将占用所需的水平空间。使用您发布的xaml,我认为Width="*"
将满足您的需求。对于ScrollViewer,似乎你不希望它能够滚动到水平但只有Verticaly?在这种情况下,请设置HorizontalScrollBarVisibility="Disabled"
。否则你将得到一个水平滚动条。
<Grid MaxHeight="40">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Whee a label:" Grid.Column="0"/>
<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto"
HorizontalScrollBarVisibility="Disabled">
<AccessText TextWrapping="Wrap" Text="{Binding MyLongTextField}"/>
</ScrollViewer>
</Grid>
答案 1 :(得分:0)
如果您只是想让AccessText
无限期换行,请将您的第二个ColumnDefinition
从Auto
修改为*
,并将AccessText
移到ScrollViewer
之外1}}如下所示...
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Whee a label:" Grid.Column="0"/>
<AccessText Grid.Column="1" TextWrapping="Wrap" Text="{Binding MyLongTextField}"/>
</Grid>
文本无法换行的原因是因为第二个ColumnDefinition
设置为Auto
;这基本上不会强制AccessText
周围的界限。
如果你想保持ScrollViewer
试试这个......
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Whee a label:" Grid.Column="0"/>
<ScrollViewer Grid.Column="1" VerticalScrollBarVisibility="Auto">
<AccessText TextWrapping="Wrap" Text="{Binding MyLongTextField}"/>
</ScrollViewer>
</Grid>
答案 2 :(得分:0)
这最终给了我想要的东西:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Text="Whee a label:" Grid.Column="0"/>
<ScrollViewer Grid.Column="1" MaxHeight="40"
HorizontalScrollBarVisibility="Disabled"
VerticalScrollBarVisibility="Auto">
<AccessText Text="{Binding CRData.Error}" TextWrapping="Wrap"/>
</ScrollViewer>
</Grid>
感谢Meleak和Aaron建议使用*
作为列宽而不是Auto
,并感谢Meleak建议使用Disabled
水平滚动条而不是Auto
。