Проблемы с привязкой данных через элемент listbox к ListBox .. (WPF) - PullRequest
0 голосов
/ 25 января 2020

Мой список в xaml:

        <ListBox x:Name="ListBoxTeamOverview" Grid.Row="1" Grid.Column="1" Grid.RowSpan="4" Margin="0,0,0,50" >
        <ListBoxItem>
            <StackPanel Orientation="Vertical">
                <StackPanel Orientation="Horizontal">
                    <TextBlock x:Name="ListBoxItemTextBoxTeamName" FontFamily="Copperplate Gothic Light" FontSize="15" Text="{Binding TeamName}" />
                    <TextBlock x:Name="ListBoxItemTextBoxTeamTag" FontFamily="Copperplate Gothic Bold" FontSize="20" Text="{Binding TeamTag}" />
                </StackPanel>
                <TextBlock x:Name="ListBoxItemTextBoxTeamnumber" FontFamily="Copperplate Gothic Light" FontSize="16" Text="{Binding TeamNumber}" />
            </StackPanel>
        </ListBoxItem>
    </ListBox>

Мой код позади; (Я получаю все данные из TextBoxes в пользовательском интерфейсе, и они не являются проблемой)

   Team newTeam = new Team()
            {
                TeamName = TextBoxTeamName.Text,
                TeamTag = TextBoxTeamTag.Text,
                TeamLeader = TextBoxTeamLeaderName.Text,
                TeamPlayer2 = TextBoxTeamPlayerTwoName.Text,
                TeamPlayer3 = TextBoxTeamPlayerThreeName.Text,
                TeamPlayer4 = TextBoxTeamPlayerFourName.Text,
                TeamPlayer5 = TextBoxTeamPlayerFiveName.Text
            };
            AllTeams.Add(newTeam);

            ListBoxItem newListBoxItemTeam = new ListBoxItem();
            newListBoxItemTeam.Content = (newTeam.TeamName, newTeam.TeamTag, newTeam.TeamNumber.ToString());
            ListBoxTeamOverview.Items.Add(newListBoxItemTeam);

Пример: если TeamName - «Team1», TeamTag - «T1», а TeamNumber - «2», тогда вывод в ListBox - одна строка = "(Team1, T1, 2). Я пытаюсь получить Team1 и T1 на одной строке, а TeamNumber на следующей строке и с разными размерами шрифта, как это видно в xaml код. Он просто не понимает, почему он не работает. Пожалуйста, помогите:)

1 Ответ

0 голосов
/ 25 января 2020

Вы должны установить ListBox ItemTemplate

<ListBox x:Name="ListBoxTeamOverview" ...>
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel Orientation="Vertical">
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding TeamName}" />
                    <TextBlock Text="{Binding TeamTag}" />
                </StackPanel>
                <TextBlock Text="{Binding TeamNumber}" />
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

Затем просто (многократно) добавить Team объекты в коллекцию Items:

ListBoxTeamOverview.Items.Add(newTeam);

Еще лучше назначить свойство ItemsSource сразу:

ListBoxTeamOverview.ItemsSource = AllTeams;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...