ItemsControlのItemTemplate内に複数の要素があったときに子要素の幅を自動調整し、HTMLのTableタグのような動きにしたいと思っています。
言葉で説明するのが難しいので、コードを示します。
XML
1<ItemsControl ItemsSource="{Binding ItemList}"> 2 <ItemsControl.ItemTemplate> 3 <DataTemplate> 4 <StackPanel> 5 <Grid> 6 <Grid.ColumnDefinitions> 7 <ColumnDefinition/> 8 <ColumnDefinition/> 9 </Grid.ColumnDefinitions> 10 <TextBlock Grid.Column="0" Text="{Binding Name}"/> 11 <TextBlock Grid.Column="1" Text="{Binding Age}" /> 12 </Grid> 13 </StackPanel> 14 </DataTemplate> 15 </ItemsControl.ItemTemplate> 16</ItemsControl>
上記コードで表示したい内容は表示されるのですが、問題点としては、Nameプロパティの文字数が各行で異なる場合に、各行でAgeプロパティの表示される横位置が揃わないことです。
上記のコードのColumnDefinitionにWidthを直接指定すれば揃うことは揃うのですが、そうするとNameやAgeの文字列長によってサイズ調整が行われず、TextBlockの長さが足りなかったり、余ったりしてしまいます。
HTMLのTableタグでは最も大きいサイズセルを持つ行に他の行が追従してサイズが変化していました。
どうすればTextBlockにバインドしたプロパティの内容によってTextBlockのサイズを調整し、且つ行単位で見たときに横位置を揃えることができるのでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/04/04 12:56