Этот вопрос касается прокладки в XAML в WPF. У меня есть конкретный макет. Счетчик ListBoxItems показывает количество отображаемых изображений. Изображения поступают из списка коллекции, который имеет свойства Data и Text. Каждое изображение имеет текст выше, который привязывается к тексту. Данные содержат значения источника/пути изображения. Это могут быть динамические значения, но для этого списка примеров.Настроить элементы ListBoxItems с использованием шаблона WPF
A | B C | D E | F G | H I | J Apple | Boy Cat | Dog Egg | Fan Goat | Hen Ice | Jelly
Яблоко и мальчик и другие названия здесь - изображения. Моя основная проблема заключается в том, как я могу получить этот макет. В которой мне нужно сгруппировать его на 2 изображения, такие как A и B, но разделенные на | (изображение блока разделителя). Максимальная пара изображений для отображения на строку равна 5. Следующий набор изображений будет помещен в следующую строку.
Мой текущий код теста:
` 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>
Пожалуйста, поделитесь своими мыслями или идеями о том, как достичь этого. Спасибо.
Большое спасибо @ M.E. Это отлично работает. Я не мог думать об этом парном подходе. Ваш подход имеет больше смысла. Теперь у меня есть идея об этом и не волнуйтесь в стиле, над которым я буду работать. Это круто. – user1670340
Отлично! Рад, что смог помочь. Если это сработает для вас, пожалуйста, [считайте, что этот ответ считается принятым ответом] (http://meta.stackexchange.com/a/5235). Благодарю. –