Diese Frage bezieht sich auf Layout in XAML in WPF. Ich habe ein bestimmtes Layout zu folgen. Die ListBoxItems-Anzahl gibt an, wie viele Bilder angezeigt werden. Die Bilder stammen aus einer Auflistungsliste mit den Eigenschaften Daten und Text. Jedes Bild hat einen Text darüber, der an Text gebunden ist. Die Daten enthalten die Bildquellen-/Pfadwerte. Dies könnten dynamische Werte sein, aber für diese Beispielliste.Anpassen von ListBoxItems mit Vorlage WPF
A | B C | D E | F G | H I | J Apple | Boy Cat | Dog Egg | Fan Goat | Hen Ice | Jelly
Die Apple und Boy und andere Namen hier sind Bilder. Mein Hauptproblem ist, wie ich es schaffen kann, dieses Layout zu haben. In dem muss ich es durch 2 Bilder wie A und B gruppieren, aber getrennt mit | (ein Trennblockbild). Das maximale Bildpaar, das pro Zeile angezeigt werden soll, ist 5. Die nächste Gruppe von Bildern wird in die nächste Zeile eingefügt.
Mein aktueller Testcode:
` public class ViewModel { public string Text { get; set; } public string FilePath { get; set; } } /// /// Interaction logic for MainWindow.xaml /// public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); List listItems = new List(); listItems.Add(new ViewModel() { Text = "A", Data = "ListBoxTest;component/Images/Apple.png" }); listItems.Add(new ViewModel() { Text = "B", Data = "ListBoxTest;component/Images/Boy.png" }); listItems.Add(new ViewModel() { Text = "C", Data = "ListBoxTest;component/Images/Cat.png" }); listItems.Add(new ViewModel() { Text = "D", Data = "ListBoxTest;component/Images/Dog.png" }); listItems.Add(new ViewModel() { Text = "E", Data = "ListBoxTest;component/Images/Egg.png" }); listItems.Add(new ViewModel() { Text = "F", Data = "ListBoxTest;component/Images/Fan.png" }); listItems.Add(new ViewModel() { Text = "G", Data = "ListBoxTest;component/Images/Goat.png" }); listItems.Add(new ViewModel() { Text = "H", Data = "ListBoxTest;component/Images/Hen.png" }); listItems.Add(new ViewModel() { Text = "I", Data = "ListBoxTest;component/Images/Ice.png" }); listItems.Add(new ViewModel() { Text = "J", Data = "ListBoxTest;component/Images/Jelly.png" }); myListBox.ItemsSource = listItems; } }
<Style x:Key="listBoxItemStyle"
TargetType="ListBoxItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<StackPanel>
<Grid>
<TextBlock Text="{Binding Text}" Margin="30" />
<Image Name="pumpImage"
Source="{Binding Data}"
Width="100"
Height="100" />
</Grid>
</StackPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Bitte teilen Sie Ihre Gedanken oder Ideen, wie dies zu erreichen. Vielen Dank.
Vielen Dank @ M.E. Das funktioniert großartig. Ich konnte nicht an diesen Pair-Ansatz denken, den Sie haben. Dein Ansatz macht mehr Sinn. Jetzt habe ich mehr Idee und sorge mich nicht mit dem Stil, an dem ich arbeiten werde. Das ist fantastisch. – user1670340
Großartig! Froh, dass ich helfen konnte. Wenn dies für Sie funktioniert, [bitte erwägen Sie, diese Antwort als akzeptierte Antwort zu markieren] (http://meta.stackexchange.com/a/5235). Vielen Dank. –