我正在开发一个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);
答案 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。
不确定这是否可以在项目中重复使用,但我认为这是一种更清晰的数据显示方法。