TextBlock 不包装 Silverlight 应用程序

Posted

技术标签:

【中文标题】TextBlock 不包装 Silverlight 应用程序【英文标题】:TextBlock not Wrapping Silverlight application 【发布时间】:2016-06-15 06:28:49 【问题描述】:

我有一个没有换行的 TextBlock,我认为它的宽度是无限的。我尝试将其绑定到 Grid 和/或 UserControl 的实际宽度,但两个宽度都超过 8000。我尝试在父视图中禁用 Horizo​​ntalScrollBarVisibility,但这也不起作用。我还阅读了 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 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

WPF,TextBlock的这个绑定怎么实现

Silverlight:带有文本修剪功能的按钮模板

Silverlight 中的嵌套样式

列表框中的Silverlight文本块未包装

Silverlight MultiScale TileSource(或Deep Zoom) - 可以包装日期线(无限水平平移)?

Silverlight 的 yfrog/twitpick 库