在下面的代码中,我从列表框中获取SelectedItem,并在第二个数据网格中显示其内容。
但是,如果我将列表框替换为已注释掉的数据网格,则数据将不再显示在第二个数据网格中。有什么理由说明为什么数据只在我使用列表框时显示在第二个数据网格中?
<ListBox Margin="5" Grid.Row="2" Grid.ColumnSpan="2" ItemsSource="{Binding NonNavBarPricerLayouts}" SelectedItem="{Binding SelectedNonNavBarItem, Mode=TwoWay}">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<!--<data:DataGrid Margin="5" Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" ItemsSource="{Binding NonNavBarPricerLayouts}" SelectedItem="{Binding SelectedNonNavBarItem, Mode=TwoWay}"
AutoGenerateColumns="False" CanUserResizeColumns="True" CanUserSortColumns="True"
SelectedIndex="-1"
GridLinesVisibility="None">
<data:DataGrid.Columns>
<data:DataGridTemplateColumn Header="Pricer Layout" Width="150">
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>-->
<TextBlock Grid.Row="3" Grid.ColumnSpan="2" Margin="5,5,5,0" Text="Selected pricer layout contents:"/>
<data:DataGrid Name="dgPricerLayoutDetail" Grid.ColumnSpan="2" Grid.Row="4" Margin="5" ItemsSource="{Binding SelectedNonNavBarItem.PricerDetails}"
AutoGenerateColumns="True" CanUserResizeColumns="False"
SelectedIndex="-1"
IsReadOnly="True" GridLinesVisibility="None">
</data:DataGrid>
答案 0 :(得分:1)
我发布这个作为答案,以防万一其他人偶然发现这一点。我花了大约4个小时试图弄清楚我做错了什么。我和caa的情况非常相似。
在SilverLight 3中,来自一个DataGrid的绑定SelectedItem作为另一个DataGrid的ItemsSource,因此没有数据显示在它作为ItemsSource的数据中。当我将第二个切换到ListBox时,我的项目会显示。我无法弄清楚我做错了什么,直到我偶然发现这篇文章并看到caa评论说它在SilverLight 4中有效但不是3.我发现我的遗产项目是一个SilverLight 3项目并将其更改为4修复它。 / p>