0
在下面的代码中,我从列表框中获取SelectedItem并在第二个数据网格中显示其内容。为什么silverlight Datagrid不显示数据?
但是,如果我用带注释的数据网格替换列表框,数据不再显示在第二个数据网格中。任何理由为什么当我使用列表框时数据只显示在第二个数据网格中?
<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>
从您发布内容的外观看,它看起来像是绑定到不同的元素。在列表框中,您的ItemsSource是绑定NonNavBarPricerLayouts **,而在DataGrid中,您已将您的ItemsSource更改为** SelectedNonNavBarItem.PricerDetails **,我认为它必须是空名称 - 没有任何选择。 ;) – 2012-04-26 14:59:10
ListBox和注释掉的DataGrid绑定到相同的东西。如果我按原样运行代码,细节显示在Bottom Datagrid中。如果我将列表框注释掉并取消注释掉的数据网格,则底部数据网格中不会显示任何数据。 – caa 2012-04-26 15:09:55
它适用于SL 4,因此我猜它是SL3中的一个错误。我使用SL3 – caa 2012-04-26 15:10:24