Как я могу связать с элементом, внутри списка - PullRequest
0 голосов
/ 03 июля 2019

У меня есть список, который я хочу привязать к внутренним значениям.

public class LogEntryList
{
    public List<LogEntry> LogEntries { get; set; }
    public LogEntryList() { LogEntries = new List<LogEntry>(); }
}
public class LogEntry
{
    public string Name { get; set; }
    public string Data { get; set; }
    public Brush BgColor { get; set; }
    public bool Selected { get; set; }
    public double Type { get; set; }
}
logEntryList.LogEntries.Add(new LogEntry { Name = "Exception 2", Type = 02 });
logEntryList.LogEntries.Add(new LogEntry { Name = "Exception 7", Type = 07 });
<ListBox Grid.Row="1" DataContext="logEntryList">
    <ListBox.ItemsSource>
        <Binding ElementName="logEntryList" Path="LogEntries" Mode="OneWay" />
    </ListBox.ItemsSource>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal" Background="Purple">
                <TextBlock VerticalAlignment="Center">Name:</TextBlock>
                <TextBlock VerticalAlignment="Center" Margin="5" Text="{Binding Name}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Как я могу привязать свои ListBoxItems к значениям Name, Data и т. Д .?

1 Ответ

1 голос
/ 03 июля 2019

Решено с использованием Window DataContext в соответствии с комментарием Клеменса.

public class LogEntryList
{
    public List<LogEntry> LogEntries { get; set; }
    public LogEntryList() { LogEntries = new List<LogEntry>(); }
}
public class LogEntry
{
    public string Name { get; set; }
    public string Data { get; set; }
    public Brush BgColor { get; set; }
    public bool Selected { get; set; }
    public double Type { get; set; }
}
DataContext = logEntryList;
logEntryList.LogEntries.Add(new LogEntry { Name = "Exception 2", Type = 02 });
logEntryList.LogEntries.Add(new LogEntry { Name = "Exception 7", Type = 07 });
<ListBox Grid.Row="1" Background="DarkGray" ItemsSource="{Binding LogEntries}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Horizontal">
                <TextBlock VerticalAlignment="Center" Background="Purple">Name:</TextBlock>
                <TextBlock VerticalAlignment="Center" Margin="5" Text="{Binding Name}" />
                <TextBlock VerticalAlignment="Center" Background="Purple">Name:</TextBlock>
                <TextBlock VerticalAlignment="Center" Margin="5" Text="{Binding Type}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...