2012-12-14 15 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。

不確定這是否可以在您的項目中重複使用,但我將它合併爲一種更清晰的顯示數據的方法。