2012-12-14 19 views
0

我正在开发一个silverlight 5应用程序。动态加载控件时TextWrapping不起作用

因为我们正在使用网格分割控件来使2个主面板更加灵活。 如果我们尝试在xaml的第一个面板中使用textblock,并在其旁边设置gridspliter,它就可以正常工作。

但是,通过代码在文本块的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

是否有一个原因这是由代码生成的? 是否可以使用ContentControl和ItemsSource(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。

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