我正在使用以下链接http://visitmix.com/labs/rosetta/EyesOfBlend/DataTemplates/学习表达混合 这是一个关于使用表达式混合的非常好的一步一步的指导。我能够成功完成所有步骤,并且能够运行程序并获得最终结果。
在步骤(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>
如果删除所选索引,则编译好。有人可以解释为什么它在编译后第一次显示,它停止工作了吗?
由于
答案 0 :(得分:2)
您几乎总是比SelectedIndex更好地绑定到SelectedItem。如果Item为null,则绑定应该正常失败。
答案 1 :(得分:1)
这可能是因为“Collection”属性在呈现列表框后绑定到itemsource 。因此,如果没有集合(空),则第一个索引[0]不存在,并抛出“超出范围的异常”。
要解决您的问题,请在填充后设置代码隐藏中的选定索引。希望有所帮助。