手风琴项目并没有显示出应有的方式

时间:2014-04-18 11:47:30

标签: c#

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

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

我为每个手风琴项绑定了dataSource,因此,最后一个dataSource依赖于两个第一。

        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;

所以,基本上,它工作正常,除了有些时候,当手风琴中没有正确显示tihs时,如下所示:

accordion bugging accordion non bugging

我们在第一张图片中看到,没有底边。因为上面还有另一条线。

当我关闭并打开手风琴时(不触及数据源,我得到第二张图像,即正确显示。

我不明白,在设置项目源

之后,我尝试以编程方式打开它
        aiCadreEmp.IsSelected = false;
        aiCadreEmp.IsSelected = true;

但没有。尝试更新布局,没有。

我根本不懂。谢谢。

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>

1 个答案:

答案 0 :(得分:1)

StackPanel为子节点提供无限高度,有时它会引起奇怪的副作用,特别是当它需要动态调整大小时。我想,在这种情况下,手风琴也为其孩子提供了无限高度,所以我们还没有众所周知的行为。

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