2017-12-12 20 views
0

내 양식에 ListView가 있고 ListView.HeaderTemplate을 설정 중이며 모양이 예상대로 보입니다.정확히 동일한 XAML을 사용하더라도 ListView.HeaderTemplate과 ListView.ItemTemplate (UWP XAML)이 다르게 표시되는 이유는 무엇입니까?

그러나 정확한 Grid 정의를 ListView.ItemTemplate에 복사하면 레이아웃이 동일하지 않습니다. 당신은 각각 게재 위치를 차별화 할 수 있도록

items spaced differently

변경된 두 열 값의 색상 (시안 및 녹색)

나는 두 항목 열 값의 색상을 변경했다. 두 개의 <x:String> 값이 정의되어 있으므로 Visual Studio의 미리보기 레이아웃에 데이터가 표시되지만 실행시 두 개의 레이아웃이 동일하게 정의되어 있어도 모양이 달라집니다. 당신은 XAML에서 알 수 ItemTemplate을 TextBlocks

한 차이에 정의

없음 위해 Grid.Row는 ItemTemplate을 TextBlocks 각 단지의 Grid.Column을 설정 (없음 위해 Grid.Row 세트)가 없다는 것이다. 그것은 시험이었고 그것은 어느 쪽의 방법과 같아 보입니다.

은 그대로 복사/붙여 넣은는 HeaderTemplate 내가 그대로 ItemTemplate을로는 HeaderTemplate를 복사하여 변경 사항 만 언급했다

ItemTemplate을합니다.

레이아웃이 동일하지 않은 이유는 무엇입니까?

<ListView.HeaderTemplate> 
    <DataTemplate> 
     <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="*" /> 
     </Grid.RowDefinitions> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*" /> 
      <ColumnDefinition Width="Auto" /> 
     </Grid.ColumnDefinitions> 
     <TextBlock Margin="7 0 0 0" Grid.Row="0" Grid.Column="0" Foreground="#ff0000" Text="Date" /> 
     <TextBlock Margin="0 0 15 0" Grid.Row="0" Grid.Column="1" Foreground="#ff0000" Text="Entry Count" /> 
     </Grid> 
    </DataTemplate> 
</ListView.HeaderTemplate> 

편집

나는 같이하는 ItemTemplate을의 ColumnDefinitions을 변경하는 경우 다음

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="200" /> 
    <ColumnDefinition Width="*" /> 
</Grid.ColumnDefinitions> 

를 그리고 그것이 내가 기대에 가까이 않습니다,하지만 난 아직 아니에요 왜 내가 이것을 다르게해야하는지. 기본적으로

better layout

답변

1

, ListViewItem는 내용을 늘릴 수 없습니다. HorizontalContentAlignmentStretch, ItemContainerStyle으로 설정하십시오.

<ListView.ItemContainerStyle> 
    <Style TargetType="ListViewItem"> 
     <Setter Property="HorizontalContentAlignment" Value="Stretch" /> 
    </Style> 
</ListView.ItemContainerStyle> 
+0

방법 1은 완벽하게 작동했습니다. ItemContainerStyle에 대해 어디에서 배웠습니까? 당신이 나를 보여주지 않았다면 나는 결코 그것을 발견하지 못했을 것입니다. 매우 감사합니다. XAML/UWP에는 문서화되지 않은 (또는 드물게 문서화 된) 것으로 보입니다. BTW, 방법 2 문제를 해결할 수 없습니다. 나는 그것을 시도했다. – raddevus

+0

@raddevus ['ItemContainerStyle'] (https://docs.microsoft.com/en-us/uwp/api/windows.ui.xaml.controls.itemscontrol#Windows_UI_Xaml_Controls_ItemsControl_ItemContainerStyle)는 'ItemsControl'의 일부입니다. 또한, 내 면책 조항을 제거하는 것이 안전하다고 생각합니다. –