绑定图像源中的图像URL时App.xaml.cs UnhandledException

时间:2014-04-06 18:14:55

标签: c# wpf xaml exception binding

我有这个XAML

(...)
<ListBox Height="Auto" Margin="0,0,-20,0" x:Name="post_Images_Grid_list" VerticalAlignment="Top" HorizontalContentAlignment="Stretch" ScrollViewer.VerticalScrollBarVisibility="Disabled" ScrollViewer.HorizontalScrollBarVisibility="Disabled">
                            <ListBox.ItemsPanel>
                                <ItemsPanelTemplate>
                                    <toolkit:WrapPanel />
                                </ItemsPanelTemplate>
                            </ListBox.ItemsPanel>
                            <ListBox.ItemTemplate>
                                <DataTemplate>
                                    <Grid Width="Auto" Height="Auto" Background="#FF#247722" Margin="0,0,10,20">
                                        <Grid.ColumnDefinitions>
                                            <ColumnDefinition Width="19*"/>
                                        </Grid.ColumnDefinitions>
                                        <StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal" Margin="0">
                                            <Image Source="{Binding image, Mode=OneWay}" Width="110" Height="110" Margin="5" Stretch="UniformToFill" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                                        </StackPanel>
                                    </Grid>
                                </DataTemplate>
                            </ListBox.ItemTemplate>
                        </ListBox> 
(...)

MyPage.xaml.cs中的这个C#代码:

(...)
post_Images_Grid_list.ItemsSource = thePost.images;
(...)

thePost.images的定义:

public List<BitmapImages> images = new List<BitmapImages>();

BitmapImages类:

public class BitmapImages
{
    public BitmapImage image { get; set; }

    public BitmapImages(string image_url)
    {
        this.image = new BitmapImage(new Uri(image_url, UriKind.RelativeOrAbsolute));
    }
}

但是在xaml页面显示完成后,调试跳转到 App.xaml.cs 中的方法 Application_UnhandledException ,有什么问题?

以下是运行时列表图像的数据:

Data of List

一切看起来都对我好!每个URL都存在且有图像,我在网络浏览器中检查过。

感谢您的帮助,我不知道发生了什么!

谢谢你,Rohit Vats,这是e.Exception:

  • e.ExceptionObject {MS.Internal.WrappedException:错误HRESULT E_FAIL已从对COM组件的调用返回。 ---&GT; System.Exception:错误HRESULT已从调用COM组件返回E_FAIL。 在MS.Internal.XcpImports.CheckHResult(UInt32 hr) 在MS.Internal.XcpImports.UIElement_Measure(UIElement元素,Size availableSize) 在System.Windows.UIElement.Measure(Size availableSize) 在Microsoft.Phone.Controls.WrapPanel.MeasureOverride(大小约束) 在System.Windows.FrameworkElement.MeasureOverride(IntPtr nativeTarget,Double inWidth,Double inHeight,Double&amp; outWidth,Double&amp; outHeight) ---内部异常堆栈跟踪结束---} System.Exception {MS.Internal.WrappedException}

它似乎与xaml图像元素的大小有关吗?

2 个答案:

答案 0 :(得分:0)

好的,我觉得很蠢:

<Grid Width="Auto" Height="Auto" Background="#FF#247722" (...) />

这里的Copypaste错误:

<Grid Width="Auto" Height="Auto" Background="#FF247722" (...) />

感谢您的帮助。

答案 1 :(得分:0)

这通常意味着您的XAML存在一个问题,该问题无法在设计时验证,但会在运行时显现。鉴于您的情况,我猜测您添加的行可能会导致其中一个Datagrid列模板以这种方式出错。

这通常是由于对样式或事件处理程序的引用不存在或不在XAML的上下文中。根据我的经验,这是Custom Control开发中常见的事情。

您应该从控件中删除样式,并将进行确认处理。