2017-03-31 14 views
1

明示的にWidthを設定せずにListViewアイテムを動的に整列しようとしています。私が得ている問題は、それらの上にある属性名を整列させることです。すなわち、属性名の下にコークスがあるべきであり、数量は整数値を有し、小計はその下に浮動小数点を有するべきである。 Windowsのサイズを変更すると、ListViewもそれぞれの属性名で変更する必要がありますが、そうではありません。 RelativePanel、ListBoxを試してみましたが、動的でなければならない幅を明示的に与えないものは何もありません。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のレイアウトで1つのアイテムを作成することができます。

明示的に幅を設定しないようにするには、Horizo​​ntalAlignmentを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

こんにちは、アレクサンドル!お返事をありがとうございます! 私が直面している問題は整列だけです。私は私が付いている写真の中で私が見せているのと同じように私のアライメントをしたい。相対的なパネルが動的なので、私の欲望のいくつかの間隔を必要とするだけでなく、それは本質的に動的でなければなりません。 私はリストビューにデータを取得することに問題はありません。 –

+0

こんにちはムハンマド!私は私の答えを編集しました、私の最初のものはあまり良くありませんでした。 DataTemplateとまったく同じListViewをグリッド上に使用することができ、固定アイテムのように動作します。グリッドとリストビューの幅が同じであることを確認してください。 – Alexandre

+0

こんにちはアレクサンドルはこの問題で私を助けてくれてありがとうが、私の主な質問では私のコードでEXPLICIT WIDTHを使いたくないと言っています。 メインの質問に私のCODEを編集しました。そこには、Screenでサイズを変更し、No widthプロパティを持つGridがあることがわかります。 –

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%!!