동료와 내가 작업하고있는 응용 프로그램의 GUI 작업을하고 있습니다. 나를 괴롭 히고있는 GUI 버그가 있으며 해결 방법을 찾을 수 없었습니다.부모의 높이를 자녀의 높이로 조정하는 방법은 무엇입니까?
제 GUI에는 그리드가 있습니다. 한 열에는 제가 누를 수있는 아래쪽 화살표 이미지가 있습니다. 화살표를 클릭하면 추가 정보가 확장됩니다. 추가 정보를 위해 RowDetailsTemplate을 사용했습니다. 다시 클릭하면 추가 정보가 사라집니다. Mouse_Down 이벤트를 사용하여 행 디테일의 가시성을 표시에서 축소로 변경하고 그 반대의 경우이를 변경합니다.
문제는 추가 정보를 접은 후에도 그리드의 크기가 계속 확장되어 추가 정보에 적합하다는 것입니다. 그러나 추가 정보의 가시성이 이미 축소되도록 설정되었으므로 그리드가 원래의 높이로 다시 변경되지 않는 이유는 무엇입니까? 데이터 그란 트의 높이를 그 크기만큼 어떻게 조절할 수 있습니까?
편집 :
<DataGrid Grid.Row="1" ItemsSource="{Binding ReadUnits}" BorderThickness="0" Name="dataGrid" RowDetailsVisibilityMode="Collapsed" HeadersVisibility="Column" GridLinesVisibility="Horizontal" VerticalScrollBarVisibility="Disabled" >
이 이미지는 클릭 할 수있는 코드 :
이 원래 붕괴에 rowdetails을 설정 내 gridrow입니다. 행이이 데이터 템플릿을 상속합니다. 마우스 다운 이벤트를 만들 수 있습니다.
<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;
}
}
문제를 보여주는 샘플 코드를 게시하면 도움이됩니다. – Phil
@ Phil, 문제의 코드를 추가했습니다. – Jay
간단한 RowDetailsTemplate을 사용하면 코드가 저에게 효과적입니다. 간단한 템플릿으로 시도하고 그 템플릿이 작동하는지 확인하십시오. .NET 4를 사용하고 있습니다. 그렇습니까? – Phil