2012-04-26 2 views
0

아래의 코드에서는 목록 상자에서 SelectedItem을 가져 와서 그 내용을 두 번째 DataGrid에 표시합니다.Silverlight Datagrid에서 왜 데이터를 표시하지 않습니까?

그러나 목록 상자를 주석으로 처리 된 DataGrid로 바꾸면 데이터가 두 번째 DataGrid에 더 이상 표시되지 않습니다. 왜 내가 목록 상자를 사용할 때 데이터가 두 번째 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 **로 변경했습니다. 이름으로 비어 있어야하며 아무것도 선택되어 있지 않아야합니다. ;) –

+0

ListBox와 주석 처리 된 DataGrid가 동일한 항목에 바인딩됩니다. 있는 그대로 코드를 실행하면 세부 정보가 Bottom Datagrid에 표시됩니다. ListBox를 주석으로 처리하고 주석 처리 된 DataGrid의 주석 처리를 제거한 경우 하단 데이터 격자에 데이터가 표시되지 않습니다. – caa

+1

SL4에서 작동하므로 SL4에서 버그가 발생합니다. SL3을 사용하는 임 – caa

답변

1

누군가 다른 사람이이 문제를 발견 할 경우를 대비해 답변으로 게시하고 있습니다. 나는 내가 뭘 잘못하고 있는지 알아 내려고 약 4 시간을 보냈다. 나는 카아에게 매우 비슷한 상황이었습니다.

Silverlight 3에서 한 DataGrid의 바운드 SelectedItem을 다른 DataGrid의 ItemsSource로 지정하면 ItemsSource로 표시되는 데이터가 나타나지 않습니다. 두 번째 항목을 ListBox로 전환하면 항목이 표시됩니다. 이 게시물을 우연히 발견하고 SilverLight 4에서 작동한다는 Caa 코멘트를 보았을 때까지 내가 뭘 잘못하고 있었는지 알아낼 수 없었습니다. 기존 프로젝트는 SilverLight 3 프로젝트 였고 4로 변경했습니다.

관련 문제