2012-04-26 92 views
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> 
+0

从您发布内容的外观看,它看起来像是绑定到不同的元素。在列表框中,您的ItemsSource是绑定NonNavBarPricerLayouts **,而在DataGrid中,您已将您的ItemsSource更改为** SelectedNonNavBarItem.PricerDetails **,我认为它必须是空名称 - 没有任何选择。 ;) – 2012-04-26 14:59:10

+0

ListBox和注释掉的DataGrid绑定到相同的东西。如果我按原样运行代码,细节显示在Bottom Datagrid中。如果我将列表框注释掉并取消注释掉的数据网格,则底部数据网格中不会显示任何数据。 – caa 2012-04-26 15:09:55

+1

它适用于SL 4,因此我猜它是SL3中的一个错误。我使用SL3 – caa 2012-04-26 15:10:24

回答

1

我发布此作为答案,以防其他人绊倒这一点。我花了大约4个小时试图弄清楚我做错了什么。我和caa的情况非常相似。

在SilverLight 3中,将一个DataGrid中的SelectedItem作为另一个DataGrid的ItemsSource绑定,使得它不会将数据作为ItemsSource显示。当我将第二个切换到ListBox时,我的项目会显示。我无法弄清楚我做错了什么,直到我偶然发现这篇文章,看到caa评论说它在SilverLight 4中工作,但不是3。我发现我的遗留项目是SilverLight 3项目,并将其更改为4修复了它。