TextBlock 不包装 Silverlight 应用程序
Posted
技术标签:
【中文标题】TextBlock 不包装 Silverlight 应用程序【英文标题】:TextBlock not Wrapping Silverlight application 【发布时间】:2016-06-15 06:28:49 【问题描述】:我有一个没有换行的 TextBlock,我认为它的宽度是无限的。我尝试将其绑定到 Grid 和/或 UserControl 的实际宽度,但两个宽度都超过 8000。我尝试在父视图中禁用 HorizontalScrollBarVisibility,但这也不起作用。我还阅读了 SO 中与我相关的所有问题,但这些建议似乎都不起作用。
<UserControl x:Class="Civica.UI.CurrentUserMenu.Views.ClassName"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300"
d:DesignWidth="1200">
<UserControl.Resources>
<ResourceDictionary>
<SolidColorBrush x:Key="SeparatorBrush" Color="#66848484" />
</ResourceDictionary>
</UserControl.Resources>
<Grid>
<ScrollViewer x:Name="Viewer" BorderThickness="0" Grid.Column="1" Grid.Row="1" Margin="0,0,0,0" Padding="0"
VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch">
<Grid Background="White" HorizontalAlignment="Left" x:Name="UserControl">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Border BorderThickness="0,0,0,1" BorderBrush="StaticResource SeparatorBrush" Grid.Row="0">
<TextBlock Text="Text" Margin="0" FontWeight="Black" />
</Border>
<TextBlock Margin="5" Text="Binding TextProperty" TextWrapping="Wrap" Grid.Row="1"/>
</Grid>
</ScrollViewer>
</Grid>
</UserControl>
编辑:
这是父视图的代码:
<UserControl x:Class="Civica.UI.Ribbon.Views.ViewName"
d:DataContext="d:DesignInstance Type=ViewMOdelName"
d:DesignHeight="120"
d:DesignWidth="600"
mc:Ignorable="d">
<Grid ScrollViewer.HorizontalScrollBarVisibility="Disabled">
<telerik:RadRibbonView x:Name="RadRibbon"
Title="Title"
ApplicationButtonContent="Content"
ApplicationMenu="Binding PropertyName"
ApplicationName="Binding PropertyName"
MinimizeButtonVisibility="Visible"
SelectionChanged="SelectionChanged" ScrollViewer.HorizontalScrollBarVisibility="Disabled"/>
</Grid>
</UserControl>
这是包含第一个视图的 RadRibbonView。
【问题讨论】:
嗯,它在 Grid 和 ScrollViewer 里面,它会得到它想要的所有宽度。您需要限制大小,例如在其上设置 MaxWidth。 如果我对 maxWidth 进行硬编码,它会换行,但我希望它随屏幕动态调整大小。 我想这取决于您的 UserControl 所在的位置。我复制了你的代码,它正确包装。 这也是我的想法,并尝试硬编码父 UserControl 的 MaxWidth,它确实使屏幕更小,但我的 TextBlock 仍然没有换行。 那里显示的是您的整个布局吗?如果可以的话,你可能会展示更多,一定有一个罪魁祸首没有被发现。 【参考方案1】:问题在于父视图应用的样式,特别是 Telerik 对象。解决方案是找到该样式,对其进行反编译并将其复制到我们的一个文件中,然后将滚动查看器更改为边框。
【讨论】:
以上是关于TextBlock 不包装 Silverlight 应用程序的主要内容,如果未能解决你的问题,请参考以下文章
Silverlight MultiScale TileSource(或Deep Zoom) - 可以包装日期线(无限水平平移)?