0

我正在开发一个 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);
4

1 回答 1

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。

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

于 2012-12-15T18:13:42.590 回答