0

私は1つのsilverlight 5アプリケーションに取り組んでいます。

gridspliter コントロールを使用して、2 つのメイン パネルを柔軟にします。xaml の最初のパネル内で textblock を使用してみて、その横に gridspliter を設定すると、正常に動作します。

しかし、コードビハインドを介して同じテキストブロックを追加している間、テキストブロックの TextWrapping は適切に機能しません。

それを含む 1 つの画像を追加する必要があり、すべてのデータが動的に取得されるため、コード ビハインドから同じものを追加しました。

以下のコードを見つけてください。

<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

これがコードによって生成される理由はありますか? ItemsSource (テキスト/画像/リンクを表示するクラスの ObservableCollection) で ContentControl を使用し、アイテム レイアウト用の ItemTemplate と StackPanel として ItemPanel を配置することは代替手段になりますか。

探しているものではないかもしれませんが、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 に答える