RowDetailsTemplate不';t自动调整背面尺寸-Silverlight数据网格

RowDetailsTemplate不';t自动调整背面尺寸-Silverlight数据网格,silverlight,Silverlight,请看附件中的截图 我正在为模板中的每一行向rowdetails区域添加一个datagrid 我现在遇到的问题是,当rowdetails区域变大时(即添加更多内容时),其大小正确 但是,一旦折叠这些行(及其相应的rowdetails)并打开另一个比第一个小的rowdetails,rowdetails容器就不会重新调整大小(即更小)以适应较小的内容 请参考以下flickr设置,因为我不允许发布图像或多个超链接: 如何解决此问题 问候 雷尼尔(Renier)我知道这个问题非常古老,但我只是在以前遇到过

请看附件中的截图

我正在为模板中的每一行向rowdetails区域添加一个datagrid

我现在遇到的问题是,当rowdetails区域变大时(即添加更多内容时),其大小正确

但是,一旦折叠这些行(及其相应的rowdetails)并打开另一个比第一个小的rowdetails,rowdetails容器就不会重新调整大小(即更小)以适应较小的内容

请参考以下flickr设置,因为我不允许发布图像或多个超链接:

如何解决此问题

问候
雷尼尔(Renier)

我知道这个问题非常古老,但我只是在以前遇到过这个问题后偶然发现了它。它与其他问题有关,如

基本上,根是DataGrid控件希望避免其行在大小上抖动。由于虚拟化,当您滚动一个元素时(假设是水平滚动),该元素不再被渲染。因此,当Silverlight试图确定一行的高度时,如果行的最大部分在一旁(因此被虚拟化),那么在不呈现所有屏幕外内容的情况下,它无法真正知道行的高度。所以在这种情况下,他们做出了妥协,他们使用屏幕上元素的高度或行的当前高度,如果当前高度大于屏幕上当前的所有元素。这将导致您描述的行为

有几个变通方法,上面链接中描述的一个方法是关闭DataGrid上的虚拟化,但是如果DataGrid中有大量数据,这可能会对性能产生影响。我使用的另一个方法是将DataGrid行高度设置为0,强制重新渲染,然后将行高度设置回默认值或自动。通过这种方式,我可以迫使行缩小


希望这能帮助那些偶然发现这个问题的人。

我知道这个问题非常古老,但我只是在以前遇到这个问题后偶然发现的。它与其他问题有关,如

基本上,根是DataGrid控件希望避免其行在大小上抖动。由于虚拟化,当您滚动一个元素时(假设是水平滚动),该元素不再被渲染。因此,当Silverlight试图确定一行的高度时,如果行的最大部分在一旁(因此被虚拟化),那么在不呈现所有屏幕外内容的情况下,它无法真正知道行的高度。所以在这种情况下,他们做出了妥协,他们使用屏幕上元素的高度或行的当前高度,如果当前高度大于屏幕上当前的所有元素。这将导致您描述的行为

有几个变通方法,上面链接中描述的一个方法是关闭DataGrid上的虚拟化,但是如果DataGrid中有大量数据,这可能会对性能产生影响。我使用的另一个方法是将DataGrid行高度设置为0,强制重新渲染,然后将行高度设置回默认值或自动。通过这种方式,我可以迫使行缩小


希望这能帮助那些偶然发现这个问题的人。

我在网上搜索了这个问题,只找到了非常复杂的解决方法(如这里)

但实际上解决这个问题非常容易:

<sdk:DataGrid.RowDetailsTemplate>
    <DataTemplate>
         <ContentControl **VerticalAlignment="Top"**
...

如果datatemplate中的控件的垂直对齐为“Top”(相对于默认的“Stretch”),则行会按预期收缩

问候
约翰内斯

我在网上搜索了这个问题,只找到了非常复杂的解决办法(如这里)

但实际上解决这个问题非常容易:

<sdk:DataGrid.RowDetailsTemplate>
    <DataTemplate>
         <ContentControl **VerticalAlignment="Top"**
...

如果datatemplate中的控件的垂直对齐为“Top”(相对于默认的“Stretch”),则行会按预期收缩

问候
Johannes

当你说“更小”时,你是指更短还是更窄?如果你发布数据网格的XAML以及你使用的Silverlight版本,这会有所帮助。当我说“更小”时,我是指更短,对不起。我正在使用Silverlight3。数据网格是使用自定义类以编程方式添加的,自定义类在服务器端填充并通过wcf调用传递。我仅有的xaml是用于RowDetailsTemplate的数据模板。请在下面的评论中找到这一点。当你说“更小”时,你是指更短还是更窄?如果你发布数据网格的XAML以及你使用的Silverlight版本,这会有所帮助。当我说“更小”时,我是指更短,对不起。我正在使用Silverlight3。数据网格是使用自定义类以编程方式添加的,自定义类在服务器端填充并通过wcf调用传递。我仅有的xaml是用于RowDetailsTemplate的数据模板。请在下面的评论中找到这一点。