2011-06-15 61 views
1

我使用下面的链接http://visitmix.com/labs/rosetta/EyesOfBlend/DataTemplates/ 它是使用Expression Blend的一个很好的一步一步的指导学习Expression Blend中。我能够成功地完成所有步骤,并且能够运行该程序并获得最终结果。为什么ListBox中的选定项在表达式混合中抛出错误?

紧接着步骤(9),在运行项目之前,当我检查的设计师,设计师并没有在我在一步中添加的大图像控制显示图像(9)。我知道为什么,因为ListBox的选定索引是-1,所以我将selectedIndex更改为0,现在我能够看到图像。但是,当我编译的代码我收到以下错误

“指定的参数超出有效值范围的参数名称:SelectedIndex的”

XAML是

<Grid x:Name="LayoutRoot" Background="White" DataContext="{Binding Source={StaticResource SampleDataSource}}"> 
    <Grid x:Name="itemGrid" DataContext="{Binding SelectedItem, ElementName=listBox}"> 
     <Image Margin="185,56,153,160" Stretch="Fill" Source="{Binding Name}"/> 
    </Grid> 
    <ListBox x:Name="listBox" SelectedIndex="0" Margin="8,0,0,8" ItemsSource="{Binding Collection}" ItemTemplate="{StaticResource ItemTemplate1}" ItemsPanel="{StaticResource ItemsPanelTemplate1}" Height="101" VerticalAlignment="Bottom"/> 
</Grid> 

如果我删除所选索引,全部编译好。有人能解释为什么它在编译后第一次显示,它停止工作?

感谢

回答

2

你几乎总是更好的结合到的SelectedItem比的SelectedIndex。如果Item为null,则绑定应该优雅地失败。

+0

我同意,SelectedItem确实失败优雅。 – Nair 2011-06-16 13:47:15

1

这可能是因为“宝典”属性获取绑定到后的列表框呈现的ItemSource 。所以如果没有收集(空),那么第一个索引[0]不存在,它会抛出一个“超出范围的异常”。

解决您的问题在代码中设置隐藏选定的索引被填充收集后。希望有所帮助。

+0

这就是为什么错误发生一个非常好的解释。但是,我认为Joel对SelectedItem的绑定答案是更好的选择。 – 2011-06-17 16:00:32

+0

同意迈克。谢谢 – 2011-06-17 16:42:03

相关问题