2012-04-26 90 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修復了它。