これはちょっと難しい問題だと思います。
いくつかの画像を表示する必要がある ListBox があり、各画像は長方形または正方形の境界線内に配置する必要があります。これは簡単なことです。実際には、このリストボックスは、画面解像度またはウィンドウ サイズに関係なく、常に 1 行あたり 3 つの要素を表示する必要があります。
それを取得するために、リストボックスを次のようにテンプレート化しました。
<ListBox Grid.Column="2" Grid.Row="1" x:Name="_productsLB" SelectedIndex="0"
ItemsSource="{Binding Products}" ScrollViewer.HorizontalScrollBarVisibility="Disabled"
HorizontalContentAlignment="Stretch">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="3" Rows="4"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Border BorderThickness="1" Background="White" BorderBrush="Black" Margin="8"
Width="Auto" Height="Auto" HorizontalAlignment="Stretch">
<Image Source="{Binding ImagePath}" Stretch="Uniform"/>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
問題は、リストボックス項目の「周囲」の正方形の境界線ではなく、画像の周囲に長方形の境界線を取得することです。
均一なグリッド列幅に依存する必要があるため、幅プロパティを指定できないことに注意してください。
何かヒントはありますか?
どうもありがとう!