ItemsPanelTemplate が行 = 6 および列 = 7 の UniformGrid に設定されたリストボックスがあります。
リストボックスの項目でスペースを埋めたい。
辞書で定義されたデータテンプレートを使用しています。
テンプレートの外側のコントロールは、HorizontalAlignment=Stretch および VerticalAlignent=Strectch の Border ですが、テンプレートがリストボックス項目のスペースを埋めませんか?
何か案は?マルコム
ItemsPanelTemplate が行 = 6 および列 = 7 の UniformGrid に設定されたリストボックスがあります。
リストボックスの項目でスペースを埋めたい。
辞書で定義されたデータテンプレートを使用しています。
テンプレートの外側のコントロールは、HorizontalAlignment=Stretch および VerticalAlignent=Strectch の Border ですが、テンプレートがリストボックス項目のスペースを埋めませんか?
何か案は?マルコム
これに対する答えは、データテンプレートではなくLISTBOXでHorizontalContentAligmentとVerticalContentAlignmentをStretchに設定することです。
EDITED:追加情報を追加し、質問に答えました。
ListBoxItems他のアイテムと統一する興味深い方法はGrid、あなたのDataTemplate
例:
<ItemsControl Grid.IsSharedSizeScope="True" ItemsSource="{Binding Path=Items}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="Content"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1" Text="{Binding Path=Name}">
</Grid>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
これで、すべてがTextBlocksレイアウト内で同じサイズになります。特定の幅/高さが設定されていない場合、子アイテムは使用可能なすべてのスペースを埋める必要があります。
または、コントロールの Width と Height を拡張するように設定することもできますが、同じ効果を実現するには Grid.SharedScopeSize を使用する方がよりエレガントな方法だと思います。