0

我想在包装面板中加载多个图像,对于每个图像,我都会使用此代码显示缩略图和一些图像细节

<Border BorderThickness="1" BorderBrush="#FFD0D1D7" Padding="5" Margin="10,10,0,0">
    <StackPanel Orientation="Horizontal">
        <!--image and dimensions-->
        <Grid Width="88" Height="55">
            <Image Source="C:\img1.jpg" Width="88" Height="55"/>
            <TextBlock Background="#B2000000" Foreground="White" Height="16" TextAlignment="Center" VerticalAlignment="Bottom">1280x1024</TextBlock>
        </Grid>
        <!--name, type and size-->
        <StackPanel Orientation="Vertical" Margin="5,0,0,0" VerticalAlignment="Center">
            <TextBlock Margin="1" Foreground="#FF787878">img13.jpg</TextBlock>
            <TextBlock Margin="1" Foreground="#FF787878">Type: JPEG</TextBlock>
            <TextBlock Margin="1" Foreground="#FF787878">Size: 321 KB</TextBlock>
        </StackPanel>
    </StackPanel>
</Border>

但是图像是在运行时加载的,我需要一些方法来创建上述代码的实例来显示图像、尺寸、名称、类型和大小

我试过这个解决方案https://stackoverflow.com/a/4991028/962284

StringBuilder sb = new StringBuilder();
// use xaml to declare a button as string containing xaml
sb.Append(@"<Border BorderThickness='1' BorderBrush='#FFD0D1D7' Padding='5' Margin='10,10,0,0'>
            <StackPanel Orientation='Horizontal'>
                <!--image and dimensions-->
                <Grid Width='88' Height='55'>
                    <Image Source='C:\img1.jpg' Width='88' Height='55'/>
                    <TextBlock Background='#B2000000' Foreground='White' Height='16' TextAlignment='Center' VerticalAlignment='Bottom'>1280x1024</TextBlock>
                </Grid>
                <!--name, type and size-->
                <StackPanel Orientation='Vertical' Margin='5,0,0,0' VerticalAlignment='Center'>
                    <TextBlock Margin='1' Foreground='#FF787878'>img13.jpg</TextBlock>
                    <TextBlock Margin='1' Foreground='#FF787878'>Type: JPEG</TextBlock>
                    <TextBlock Margin='1' Foreground='#FF787878'>Size: 321 KB</TextBlock>
                </StackPanel>
            </StackPanel>
        </Border>");

FrameworkElement thumb = (FrameworkElement)System.Windows.Markup.XamlReader.Parse(sb.ToString());
ThumbnailContainer.Children.Add(thumb);

但我收到以下错误 System.Windows.Markup.XamlParseException

我也尝试了样式,但样式不支持多个参数(指定文本块:尺寸、大小、名称、类型和大小)只是“模板绑定标签”为 1 个值

我可以做些什么来创建第一个代码的实例以在运行时显示多个图像?

4

2 回答 2

1

哇。所以看起来很难做事。是时候拥抱 WPF 和 XAML 了。

我有一篇关于这个完全相同的事情的帖子还没有完成。我花时间为你完成它。我什至在示例中使用了您的 XAML 片段(嗯,它的修改版本),仅供您参考。

http://www.wpfsharp.com/2012/10/23/displaying-images-from-a-folder-with-details-in-wpf/

Clemens 在他的评论中使用 ItemsControl 是正确的。

于 2012-10-23T19:05:32.800 回答
1

是的,您的方法是错误的,您应该以其他方式执行此操作,但要让您的代码片段正常工作,请尝试在您正在构建的字符串中添加xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"您的Border元素。我怀疑这是错误。

于 2012-10-23T19:13:28.357 回答