2017-03-31 1 views
1

명시 적으로 너비를 설정하지 않고 동적으로 ListView 항목을 정렬하려고합니다. 내가 겪고있는 문제는 그들 위에있는 속성 이름을 정렬하는 것입니다. 즉, Name 속성은 Coke가 그 아래에 있어야하며, Quantity는 정수 값을 가져야하고, Subtotal은 그 아래에 부동 소수점을 가져야합니다. Windows의 크기를 조정하면 ListView도 각 속성 이름으로 변경해야하지만 변경되지는 않습니다. RelativePanel, ListBox 그들을 시도했지만 아무것도 동적 인 원하는 폭을주는 explicity없이 작동하지 않습니다. ListView in UWP

<Grid Grid.Column="2" Margin="5,0,5,0"> 

      <ScrollViewer VerticalScrollBarVisibility="Hidden"> 
       <StackPanel> 
        <TextBlock Style="{StaticResource MyTextBlock1}" FontSize="20" HorizontalAlignment="Center" Margin="0,0,0,10">Order Summary</TextBlock> 
        <RelativePanel> 
         <TextBlock Name="ItemName" Style="{StaticResource MyTextBlock1}" FontSize="12">Name</TextBlock> 
         <TextBlock Name="ItemPrice" Style="{StaticResource MyTextBlock1}" FontSize="12" RelativePanel.AlignRightWithPanel="True">SubTotal</TextBlock> 
         <TextBlock Name="ItemQuantity" Style="{StaticResource MyTextBlock1}" Margin="0,0,10,0" FontSize="12" RelativePanel.LeftOf="ItemPrice">Quantity</TextBlock> 
        </RelativePanel> 

        <ListView ItemsSource="{x:Bind dumbList}"> 
         <ListView.ItemTemplate> 
          <DataTemplate x:DataType="local:Dumb"> 
           <Grid Width="200"> 
            <Grid.ColumnDefinitions> 
             <ColumnDefinition Width="3*"/> 
             <ColumnDefinition Width="1*"/> 
             <ColumnDefinition Width="1*"/> 
            </Grid.ColumnDefinitions> 
            <TextBlock Text="{x:Bind name}"/> 
            <TextBlock Text="{x:Bind id}" Grid.Column="1"/> 
            <TextBlock Name="Quatity" Text="{x:Bind price}" Grid.Column="2"/> 
           </Grid> 
          </DataTemplate> 
         </ListView.ItemTemplate> 
        </ListView> 
</Grid> 

CLICK HERE!! for the image

답변

0

편집 :

당신은 목록보기 위의 DataTemplate을 레이아웃에 하나 개의 항목을 만들 수 있습니다.

너비를 명시 적으로 설정하지 않으려면 HorizontalAlignment를 Stretch (Android XML fill_parent와 유사)로 설정하고 Margin을 사용할 수 있습니다.

예 : 귀하의 열 정의가 비율이 아닌 전체 값이어야한다

<Grid 
    HorizontalAlignment="Stretch" 
    Margin="12,12,12,12" 
    Height="100"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="3*"/> 
     <ColumnDefinition Width="1*"/> 
     <ColumnDefinition Width="1*"/> 
    </Grid.ColumnDefinitions> 
    <TextBlock Text="Name"/> 
    <TextBlock Text="Quantity" Grid.Column="1"/> 
    <TextBlock Text="SubTotal" Grid.Column="2"/> 
</Grid> 

<ListView ItemsSource="{x:Bind dumbList}"> 
    <ListView.ItemTemplate> 
     <DataTemplate x:DataType="local:Dumb"> 
      <Grid 
       HorizontalAlignment="Stretch" 
       Margin="12,12,12,12" 
       Height="100"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="3*"/> 
        <ColumnDefinition Width="1*"/> 
        <ColumnDefinition Width="1*"/> 
       </Grid.ColumnDefinitions> 
       <TextBlock Text="{x:Bind name}"/> 
       <TextBlock Text="{x:Bind id}" Grid.Column="1"/> 
       <TextBlock Name="Quatity" Text="{x:Bind price}" Grid.Column="2"/> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

안녕 Alexandre! 답장을 보내 주셔서 감사합니다! 내가 직면하고있는 문제는 바로 정렬입니다. 나는 내가 붙인 그림에서 보여준 것과 똑같은 것을 원한다. 상대 패널이 동적 인 것처럼 내 욕망의 간격을 좁히고 속성이 동적이어야합니다. 내 목록보기에 데이터를 가져 오는 데 문제가 없습니다. –

+0

안녕하세요 무하마드! 나는 내 대답을 편집했는데 첫 번째 질문은별로 좋지 않았다. 고정 된 항목처럼 DataTemplate과 똑같이 ListView 위에 Grid를 사용할 수 있습니다. Grid와 ListView가 같은 너비인지 확인하십시오. – Alexandre

+0

안녕하세요 Alexandre는이 문제에 대해 도움을 주셔서 감사합니다.하지만 여전히 내 주요 질문에서 코드에 EXPLICIT WIDTH를 사용하고 싶지는 않다고 말씀하셨습니다. 주요 질문에 내 코드를 편집하여 화면 크기와 너비 속성이없는 표가있는 것을 볼 수 있습니다. –

0

.

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width=".8*"/> 
    <ColumnDefinition Width=".1*"/> 
    <ColumnDefinition Width=".1*"/> 
</Grid.ColumnDefinitions> 

.8 = 80%.1 = 10%.1 = 10%총 = 100 %

귀하의 정의는 다음과 같습니다

3 = 300%1 = 100%1 = 100%총 = 500 %!