2011-09-15 3 views
1

두 개의 열이있는 WPF DataGrid가 있습니다. 두 번째 열에 눈금을 자동으로 맞추기 위해 너비를 "*"로 설정합니다. 그러나 런타임에 DataGrid는 우스운 폭으로 크기가 조정됩니다.별표가있는 DataGrid는 전체 DataGrid의 크기를 조정합니다.

여기에 외부 컨트롤과 속성을 제거 (내가 생각하는) 내 기본 마크 업입니다 :

<Grid> 
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"> 
     <Grid> 
      <StackPanel> 
       <DataGrid Name="MyGrid" AutoGenerateColumns="False" 
          CanUserAddRows="False" CanUserReorderColumns="False" 
          CanUserResizeColumns="False"> 
        <DataGrid.Columns> 
         <DataGridTextColumn Header="Column 1" Width="Auto" Binding="{Binding Field1}"/> 
         <DataGridTextColumn Header="Column 2" Width="*" Binding="{Binding Field2}"/> 
        </DataGrid.Columns> 
       </DataGrid> 
      </StackPanel> 
     </Grid> 
    </ScrollViewer> 
</Grid> 

나는 문제가 데이터 그리드가에서 ScrollViewer에있는에있다 생각한다.

Width="{Bidning ElementName=MyGrid, Path=ActualWidth}" 
this post에 제안

하지만 행운 : 나는 데이터 그리드 폭에에서 ScrollViewer의 폭을 설정했습니다. HorizontalScrollBarVisibility를 Disabled로 설정하려고 시도했지만 모든 것이 사라졌습니다 (심각하게).

나는 또한 이것 모두가 "사라지는"모든 것과 관련이있는 Window에있는 다른 UserControl에있는 UserControl에 있음을 언급해야합니다. (너비가 미쳐 가고 모든 것이 '꺼져 있습니다. 창').

+1

당신이 닷넷 4.0를 사용하고 있습니까? 같은 주제에 대해 2-3 주 전에 또 다른 주제에 대해 생각해 보았습니다. 4.0에서 3.5에서 작동하는 버그가있는 것으로 판단되었습니다. – tsells

+0

예, .NET 4.0을 사용합니다. 이것이 중복 된 것이라면 누구든지 저에게 이전 질문을 가르쳐 주시면 감사하겠습니다. –

+0

나는 그것을 찾았지만 그것을 찾을 수 없었다. WPF 태그 아래를보고 다시 돌아가서 찾을 수 있습니다. – tsells

답변

1

DataGrid 전에 모든 것을 제거하여 레이아웃을 단순화하십시오. DataGrid에는 기본 템플릿에 포함 된 ScrollViewer가 이미 포함되어 있습니다. 또한 StackPanel을 사용하면 자녀가 사용 가능한 모든 공간을 채울 수 있습니다. StackPanel은 내용의 크기에 따라 늘어납니다. 따라서 DataGrid은 무한대까지 확장됩니다. 이름 및 이유는 다음과 같습니다 :

나는 또한 X로 데이터 그리드의 이름 속성을 변경했을 In WPF, what are the differences between the x:Name and Name attributes?

<DataGrid 
    x:Name="MyGrid" 
    AutoGenerateColumns="False" 
    CanUserAddRows="False" 
    CanUserReorderColumns="False" 
    CanUserResizeColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Column 1" Width="Auto" Binding="{Binding Field1}"/> 
     <DataGridTextColumn Header="Column 2" Width="*" Binding="{Binding Field2}"/> 
    </DataGrid.Columns> 
</DataGrid> 
관련 문제