1

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

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

これは、ptoto を持つリストボックスの項目の 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> 

ここにテキスト付きのテンプレートがあります

<local:NewsTemplateSelector.Texts>
    <DataTemplate>
        <StackPanel Orientation="Horizontal" Background="YellowGreen" Width="400" Height="300" >
            <Image Source="{Binding SourceImage}" Height="75" Width="75" Margin="0,-225,0,0" />
            <Canvas Width="400">
                <TextBlock Text="{Binding SourceName}" FontSize="25" Foreground="Black" TextWrapping="Wrap" Width="326" Height="65" d:LayoutOverrides="VerticalAlignment, Height"  />
                <TextBlock Text="{Binding Texts}"  Foreground="Black" FontSize="25" TextWrapping="Wrap" Height="229" VerticalAlignment="Bottom" HorizontalAlignment="Right" Width="326" Canvas.Top="69" />
            </Canvas>

        </StackPanel>
    </DataTemplate>
</local:NewsTemplateSelector.Texts>

auto を使用しようとしましたが、アイテムの高さは 0 です。リストボックスのアイテムの下にフィールドの色が「赤」の境界線を使用すると、アイテムのコンテンツではなく、各アイテムに赤い色の線が表示されます。

4

1 に答える 1

0

テンプレート セレクターの使用方法については、このチュートリアルを参照してください。http://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector

于 2012-12-04T02:52:02.577 に答える