1

私は listBox を持っています。コレクションから入力します。コレクションの各アイテムには、静的な名前と画像、および動的なコンテンツ (テキスト、写真、写真など) という情報があります。コレクションの各アイテムのリストボックスのアイテムの高さを変更したい。テキストのみの場合、高さはコンテンツに依存します - リストボックスの項目には静的 (名前のテキストブロック、画像の画像) とテキストを含むテキストブロックが必要であり、テキストブロックの高さはテキストに従って変更する必要があります (2-3 文字列の場合、高さは最小、テキストが 15 ~ 20 個の文字列に収まる場合 - テキストブロックの高さは文字列に応じて変更する必要があります)、コレクションのアイテムにテキストと画像が含まれる場合 - 静的 (名前用のテキストブロック、画像用の画像)、テキスト用のテキストブロック、および画像が必要です画像用。リストボックスのアイテムの高さは、テキストブロックのサイズと画像のサイズに依存する必要があります。

現時点では、アイテムの高さが静的なリストボックスがあり、高さを動的にしたいと考えています。

これは私のリストボックスのアイテムの1つです

<local:NewsTemplateSelector.Photo>
    <DataTemplate>
        <Border 
            BorderBrush="Red" 
            BorderThickness="2"  
            Width="400" 
            Height="auto" 
            Margin="10">
            <StackPanel Orientation="Horizontal" Width="400" Height="auto">
                <Image 
                    Source="{Binding SourceImage}" 
                    Height="75" 
                    Width="75" 
                    Margin="0,-225,0,0" />
                <Canvas Width="400">
                    <TextBlock 
                        Text="{Binding SourceName}" 
                        Foreground="Black" 
                        FontSize="25" 
                        TextWrapping="Wrap" 
                        Height="55" 
                        Width="326" 
                        d:LayoutOverrides="VerticalAlignment, Height" />
                    <Image  
                        Source="{Binding Photo[0].Big}" 
                        Height="auto" 
                        VerticalAlignment="Bottom" 
                        HorizontalAlignment="Right" 
                        Width="326" 
                        Canvas.Top="69"/>
                </Canvas>
            </StackPanel>
        </Border>
    </DataTemplate>
</local:NewsTemplateSelector.Photo> 

UPD:試した

<local:NewsTemplateSelector.Photo>
    <DataTemplate>
        <Border 
            BorderBrush="Red" 
            BorderThickness="2"  
            Width="auto" 
            Height="auto" 
            Margin="10">
            <Canvas Width="auto">
                <Image 
                    Source="{Binding SourceImage}" 
                    Height="auto" 
                    Width="auto" 
                    HorizontalAlignment="Stretch" />
                <TextBlock 
                    HorizontalAlignment="Stretch" 
                    Text="{Binding SourceName}" 
                    Foreground="Black" 
                    FontSize="25" 
                    TextWrapping="Wrap" 
                    Height="auto" 
                    Width="auto"  
                    MaxHeight="300" 
                    MaxWidth="460"  />
                <TextBlock 
                    HorizontalAlignment="Stretch" 
                    Text="{Binding Texts}" 
                    Foreground="Black" 
                    FontSize="25" 
                    TextWrapping="Wrap" 
                    Height="auto" 
                    Width="auto" 
                    MinHeight="150"   
                    MaxHeight="300" 
                    MaxWidth="460"  />
                <Image  
                    HorizontalAlignment="Stretch"   
                    Source="{Binding Photo[0].Big}" 
                    Height="auto" 
                    MinHeight="150" 
                    MaxHeight="300" 
                    MaxWidth="460"  
                    Width="auto"/>
            </Canvas>
        </Border> 
    </DataTemplate>
</local:NewsTemplateSelector.Photo>`

ただし、写真が互いに重ねられ、SourseImage という名前の画像も画面の上部に重ねられます

4

2 に答える 2

0

xamlコードのListBoxの高さに「auto」値を使用できます

    <ListBox Height="auto">
    </ListBox>
于 2012-12-03T08:56:07.943 に答える
0

height=auto や width=auto など、すべてのハードコードされたプロパティを auto に置き換えてみてください。

合計行を埋めたい場合は、Horizo​​ntalAlignment=:stretch を作成します。

テキストブロック プロパティ TextWrapping="wrap" と MinWidth を必要に応じて固定します。

于 2012-12-04T06:56:25.193 に答える