我正在写一个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时,如下所示:
我们在第一张图片中看到,没有底边。因为上面还有另一条线。
当我关闭并打开手风琴时(不触及数据源,我得到第二张图像,即正确显示。
我不明白,在设置项目源
之后,我尝试以编程方式打开它 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>
答案 0 :(得分:1)
StackPanel为子节点提供无限高度,有时它会引起奇怪的副作用,特别是当它需要动态调整大小时。我想,在这种情况下,手风琴也为其孩子提供了无限高度,所以我们还没有众所周知的行为。
如果您只需要2行或3行,请改用Grid。