当控件动态加载时,TextWrapping将不起作用

时间:2012-12-14 14:05:11

标签: silverlight textblock textwrapping

我正在开发一个silverlight 5应用程序。

因为我们使用gridspliter控件使2个主面板变得灵活。 如果我们尝试在xaml的第一个面板中使用textblock并在其旁边设置gridspliter,那就可以了。

但是,通过textblock的TextWrapping后面的代码添加相同的文本块是不正常的。

我们已经从代码中添加了相同内容,因为我们需要添加一个图像,并且所有数据都是动态的:

找到以下代码:

<StackPanel x:Name="stkRelatedEntity" Grid.Column="0" Grid.Row="1">

HyperlinkButton hyltest = new HyperlinkButton();
StackPanel stk = new StackPanel();
stk.Orientation = Orientation.Horizontal;
Image RImage = new Image();
if (relatedEntity.Image != null)
{
    RImage.Source = Common.GetBitMap((byte[])relatedEntity.Image);
    RImage.Height = 16;
    RImage.Width = 16;
}


TextBlock RText = new TextBlock();
RText.Text = relatedEntity.DisplayNameN;
RText.TextWrapping = TextWrapping.Wrap;                        
RText.MaxWidth = 250;
RText.MinWidth = 10;

stk.Children.Add(RImage);
stk.Children.Add(RText);
hyltest.Content = stk;
stkRelatedEntity.Children.Add(hykInfo);

1 个答案:

答案 0 :(得分:1)

有没有理由为什么这是由代码生成的? 是否可以使用带有ItemsSource的ContentControl(显示text / image / link的类的ObservableCollection),然后将ItemTemplate作为项目布局,将ItemPanel作为StackPanel。

它可能不是你想要的,但我在XAML中想象这样的东西:

<ItemsControl ItemsSource="{Binding Path=MyItems}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Grid>
                <HyperlinkButton Content="{Binding Path=LinkToShow}" />
                <TextBlock Text="{Binding Path=TextToShow}" TextWrapping="Wrap" />
                <Image Source="{Binding Path=ImageToShow}" />
            </Grid>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

我想象我有一个ObservableCollection的模型/代码,其中“SomeClass”是保存链接,图像和文本的内容。 此集合绑定到ItemsControl中的ItemsSource。

不确定这是否可以在项目中重复使用,但我认为这是一种更清晰的数据显示方法。