如何将父母的身高调整到孩子的身高?

时间:2012-02-16 16:54:41

标签: wpf xaml

我正在处理一个同事和我正在研究的应用程序的GUI。有一个GUI错误一直困扰着我,我无法弄清楚如何修复。

在我的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的可见性。

private void navigationImage_MouseDown(object sender, MouseButtonEventArgs e)
    {
        FrameworkElement frameworkElement = (FrameworkElement)sender;
        Image image = (Image)sender;

        DataGridRow dataGridRow = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromItem(frameworkElement.DataContext);
        if (dataGridRow.DetailsVisibility == Visibility.Collapsed)
        {
            dataGridRow.DetailsVisibility = Visibility.Visible;
            BitmapImage icon = new BitmapImage(new Uri(".../collapse.png"));
            image.Source = icon;
        }
        else
        {
            dataGridRow.DetailsVisibility = Visibility.Collapsed;
            BitmapImage icon = new BitmapImage(new Uri(".../expand.png"));
            image.Source = icon;
        }
    }

2 个答案:

答案 0 :(得分:0)

这取决于您为托管网格而创建的rowheight和行,其中包含“附加信息”。在你的行定义中尝试将高度设为“自动”..

像这样......

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

答案 1 :(得分:0)

因此,在尝试通过蛮力修复我的问题并使用看起来不那么优化的代码后,我决定尝试再搜索网络并找到解决问题的答案:http://social.msdn.microsoft.com/Forums/da-DK/wpf/thread/a0e7aea8-e9ad-441f-a775-1178aab75fb0

  

我似乎通过设置完全不相关的设置解决了这个问题。

     

在我的孩子网格中,我将ScrollViewer.CanContentScroll设置为True。   一旦我在所有Child Grids中将它设置为False,它似乎神奇地   工作。现在当我折叠我的行细节时,它会调整包含行的大小   适当。如果你能帮助我,我希望看到的一件事   与确定是解释这是如何解决问题。

我相信发生的事情是当我扩展下拉列表时,滚动查看器正在做它的事情,但是滚动查看器只是看不见但仍然存在并随着孩子变大而扩展父网格。滚动查看器被禁用后,问题就消失了。

相关问题