2012-02-16 83 views
1

我正在开发一个同事和我正在开发的应用程序的GUI。有一个GUI bug,一直在窃听我,我一直无法弄清楚如何解决。如何调整父母的高度到其子女的身高?

在我的GUI中有一个网格。其中一列是我可以按下的向下箭头图像。当你点击箭头时,它会扩展附加信息。我使用RowDetailsTemplate获取更多信息。当您再次单击它时,附加信息将消失。我使用Mouse_Down事件来将行细节的可见性从可见变为可折叠,反之亦然。

问题是,在折叠了附加信息之后,网格的大小仍然扩大,好像适合附加信息一样。但是附加信息的可见性已经设置为折叠状态,为什么我的网格不能恢复到原始高度?如何将datagridrow的高度调整为其子级大小?

编辑:

这是我gridrow最初设定rowdetails到崩溃:

<DataGrid Grid.Row="1" ItemsSource="{Binding ReadUnits}" BorderThickness="0" Name="dataGrid" RowDetailsVisibilityMode="Collapsed" HeadersVisibility="Column" GridLinesVisibility="Horizontal" VerticalScrollBarVisibility="Disabled" > 

这是代码在图像单击是。该行正在侵入此数据模板。这是我可以创建Mouse Down事件。

<DataGridTemplateColumn Header="" Width="30"> 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <Image Name="navigationImage" Source=".../expand.png" Width="16" Height="16" MouseDown="navigationImage_MouseDown" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
</DataGridTemplateColumn> 

这是事件发生的地方。这将设置rowdetails的可见性。

​​
+0

这将有助于如果你可以发布一些示例代码来展示问题。 – Phil 2012-02-16 17:18:38

+0

@Phil,增加了一些有问题的代码。 – Jay 2012-02-16 17:36:18

+0

您的代码适用于我的简单RowDetailsTemplate。尝试一个简单的模板,看看是否可行。我使用.NET 4,是吗? – Phil 2012-02-16 21:48:06

回答

0

它取决于您创建的rowheight和行,以承载具有“附加信息”的网格。在你的行定义的地方尝试给高度“自动” ..

事情是这样的..

<RowDefinition Height="Auto"></RowDefinition> 
0

试图通过暴力来解决我的问题,并使用代码看起来不太理想,我决定以后于是尝试和搜索网络更多,并来到这个答案,这解决了我的问题:http://social.msdn.microsoft.com/Forums/da-DK/wpf/thread/a0e7aea8-e9ad-441f-a775-1178aab75fb0

我似乎已经通过设置完全无关的设置来解决问题。

在我的子网格中,我将ScrollViewer.CanContentScroll设置为True。 一旦我在所有子网格中将其设置为False,它似乎神奇地 工作。现在,当我折叠我的行详细信息时,它会适当调整包含行 的大小。我希望看到的一件事是否可以帮助我 正在确定是解释如何解决这个问题。

我相信发生的事情是,当我扩展下拉菜单时,scrollviewer正在做它的事情,但scrollviewer只是看不见,但仍然存在,并随着孩子的增长扩大了父网格。随着scrollviewer禁用,问题消失。