Я думаю, вы могли бы искать что-то вроде этого.
Этого легко достичь, если у вас есть класс модели, связанный с вашим ListBox. Выполните следующие шаги
Шаг 1 - Создайте класс модели, допустим, «ListBoxItemModel.cs»
public class ListBoxItemModel
{
public string Text { get; set; }
public Brush ForegroundBrush { get; set; }
}
Примечание: - I Я не придерживаюсь никакого подхода MVVM здесь для демонстрации. Если вы знакомы, то можете реализовать этот код.
Шаг 2 - Создайте окно с ListBox и определите DataTemplate для вашего класса Model, как показано ниже в вашем MainWindow.
Назначьте DataTemplate свойству ListBox ItemTemplate.
<Window x:Class="SO61263305.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:SO61263305"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Window.Resources>
<DataTemplate x:Key="LocalTemplate" DataType="local:ListBoxItemModel">
<TextBlock Text="{Binding Text}" Foreground="{Binding ForegroundBrush}" />
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<ListBox x:Name="ItemsListBox" Grid.Row="0" Height="200" Width="200"
ItemTemplate="{StaticResource LocalTemplate}"/>
</Grid>
Шаг 3 - Создайте список из ListBoxItemModel и привязайте его к ListBox из выделенного кода вашего окна или пользовательского контроля. В моем случае это MainWindow.xaml.cs
private void LoadDataObjects()
{
var items = new List<ListBoxItemModel>();
var item = new ListBoxItemModel()
{
Text = "John ABCD 1",
ForegroundBrush = new SolidColorBrush(Color.FromRgb(0, 0, 0))
};
items.Add(item);
item = new ListBoxItemModel()
{
Text = "John ABCD 2",
ForegroundBrush = new SolidColorBrush(Color.FromRgb(200, 79, 24))
};
items.Add(item);
ItemsListBox.ItemsSource = items;
}
. В вышеупомянутом методе вам нужно добавить каждый элемент с текстом, который вы хотите отобразить, и Foreground Bru sh.
Шаг 4 - Вызовите вышеуказанный метод из вашего конструктора code-behind или вы можете вызвать любые другие события, такие как нажатие кнопки, чтобы загрузить данные в список.
См. Ниже моего полного MainWindow.xaml.cs (код позади MainWindow)
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
LoadDataObjects();
}
private void LoadDataObjects()
{
var items = new List<ListBoxItemModel>();
var item = new ListBoxItemModel()
{
Text = "John ABCD 1",
ForegroundBrush = new SolidColorBrush(Color.FromRgb(0, 0, 0))
};
items.Add(item);
item = new ListBoxItemModel()
{
Text = "John ABCD 2",
ForegroundBrush = new SolidColorBrush(Color.FromRgb(200, 79, 24))
};
items.Add(item);
ItemsListBox.ItemsSource = items;
}
}
Надеюсь, что это даст вам некоторое представление, и вы сможете улучшить ваши требования в дополнение к нему.
Попробуйте и дайте мы знаем, если у вас возникнут какие-либо трудности.