C# 手风琴项目没有';它不会以应有的方式出现

C# 手风琴项目没有';它不会以应有的方式出现,c#,C#,我正在写一个silverlight页面,在我的应用程序中,我遇到了一个奇怪的问题 所以,在我的页面中,我得到了三个手风琴项目:其中2个是静态的,1个是动态的 我为每个手风琴项目绑定数据源,因此,最后一个数据源取决于两个第一 foreach (CadreEmp item in CadreEmpSource.DataView) { Catproc isInCat = CatprocSource.DataView.OfType<Catpr

我正在写一个silverlight页面,在我的应用程序中,我遇到了一个奇怪的问题

所以,在我的页面中,我得到了三个手风琴项目:其中2个是静态的,1个是动态的

我为每个手风琴项目绑定数据源,因此,最后一个数据源取决于两个第一

        foreach (CadreEmp item in CadreEmpSource.DataView)
        {

            Catproc isInCat = CatprocSource.DataView.OfType<Catproc>().Where(ores => ores.IdCat == item.IdCat).FirstOrDefault();
            Filproc isInFil = FilprocSource.DataView.OfType<Filproc>().Where(ores => ores.IdFil == item.IdFil).FirstOrDefault();
            if (isInCat != null && isInFil != null)
            {
                CadreEmpUI caUi = new CadreEmpUI();
                caUi.IdCadreEmp = item.IdCadreEmp;
                caUi.IdCat = item.IdCat;
                caUi.IdFil = item.IdFil;
                caUi.LibCadreEmp = item.LibCadreEmp;
                caUi.IsSelect = item.IsSelect;
                lstCadreEmp.Add(caUi);
                CadreEmpProc caP = CadreEmpProcSource.DataView.OfType<CadreEmpProc>().Where(ores => ores.IdCadreEmp == caUi.IdCadreEmp).FirstOrDefault();
                if (caP != null)
                {
                    caUi.IsSelect = true;
                }

            }
        }

        dgCadreEmp.ItemsSource = null;
        dgCadreEmp.ItemsSource = lstCadreEmp;
但什么都没有。试图更新布局,但什么都没有

我一点也不懂。多谢各位

xaml代码:

      <layout:Accordion Width="Auto"         
                        Grid.ColumnSpan="2"
                        Grid.Column="4"
                        Grid.RowSpan="2"
                        x:Name="accCadreEmp"
                        SelectionMode="ZeroOrOne"
                        ExpandDirection="Down"
                        Grid.Row="0">
             <layout:AccordionItem 
                     x:Name="aiCadreEmp">
                     <StackPanel Orientation="Vertical">
                          <sdk:DataGrid x:Name="dgCadreEmp"                                                                       
MaxWidth="1200"
AutoGenerateColumns="False" >
                         <sdk:DataGrid.Columns>
                              <sdk:DataGridTextColumn Header="Libellé"
                                                      IsReadOnly="True"
                                                      Binding="{Binding LibCadreEmp}" />
                              </sdk:DataGrid.Columns>
                         </sdk:DataGrid>
                      </StackPanel>
               </layout:AccordionItem>
      </layout:Accordion>

StackPanel为其子级提供无限高,有时会产生奇怪的副作用,尤其是当需要动态调整其大小时。我想,在这种情况下,手风琴也为它的孩子们提供了无限的高度,所以我们还不知道他们的行为


如果您只需要2或3行,请改用网格。

为什么在StackPanel中有DataGrid?@ad1Dima好吧,这是为了防止我需要在此块中添加另一项(如按钮…)。但你说得很对。因为我移除了stackPanel,所以它更新得很好。这个stackpanel怎么能窃听代码?谢谢。我从来没有想过可能是堆栈面板在窃听我的应用程序。我想,DataGrid也必须为它的孩子提供无限高。如果它还有无穷多个父对象(如StackPanel、ScrollViewer或Canvas),它将通过内容来度量自身。这一步可能有错误。
      <layout:Accordion Width="Auto"         
                        Grid.ColumnSpan="2"
                        Grid.Column="4"
                        Grid.RowSpan="2"
                        x:Name="accCadreEmp"
                        SelectionMode="ZeroOrOne"
                        ExpandDirection="Down"
                        Grid.Row="0">
             <layout:AccordionItem 
                     x:Name="aiCadreEmp">
                     <StackPanel Orientation="Vertical">
                          <sdk:DataGrid x:Name="dgCadreEmp"                                                                       
MaxWidth="1200"
AutoGenerateColumns="False" >
                         <sdk:DataGrid.Columns>
                              <sdk:DataGridTextColumn Header="Libellé"
                                                      IsReadOnly="True"
                                                      Binding="{Binding LibCadreEmp}" />
                              </sdk:DataGrid.Columns>
                         </sdk:DataGrid>
                      </StackPanel>
               </layout:AccordionItem>
      </layout:Accordion>