Как получить все значения из TextBox из ListBox в WPF c#? - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь получить все значения из ListBox, который я связал данные из моего класса. На данный момент это не сработало и возвращает путь моего класса «Спринты», но не данные.

Это мой XAML

<UserControl x:Class="Prototype.Sprint_Planning.PlanningIndex"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:local="clr-namespace:Prototype.Sprint_Planning"
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
             mc:Ignorable="d"
             d:DesignHeight="570" d:DesignWidth="830">

    <!-- whole projects grid -->
    <Grid Grid.Column="1" Grid.Row="1">
        <Grid.RowDefinitions>
            <RowDefinition Height="60*" />
            <RowDefinition Height="239*" />

        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>

        </Grid.ColumnDefinitions>
        <Grid.Background>
            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                <GradientStop Color="#FFA0A0A0" Offset="1" />
                <GradientStop Color="#FFDADADA" />
            </LinearGradientBrush>
        </Grid.Background>

        <!-- create new project button -->
        <Grid Column="2">
            <Button Margin="10">
                <Grid Width="230">
                    <materialDesign:PackIcon Kind="Plus" />
                    <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Text="Maak nieuwe Sprint aan"
                               FontFamily="Century Gothic" />
                </Grid>
            </Button>
        </Grid>


        <!-- project buttons -->
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="98*"/>
                <RowDefinition Height="17*"/>
            </Grid.RowDefinitions>
            <!-- LIST -->
            <ListView Margin="10,27,10,-444" Name="lvDataBinding" Grid.Row="1">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <WrapPanel>
                            <TextBlock x:Name="SelectionSprint" Text="Name: " />
                            <TextBlock Text="{Binding Name}" FontWeight="Bold" />
                            <TextBlock Text=", " />
                            <TextBlock MouseLeftButtonUp="SelectionSprint_MouseLeftButtonUp" x:Name="Id" Text="{Binding Id}" Tag="{Binding Id}" FontWeight="Bold" />
                            <TextBlock Text=" (" />
                            <TextBlock Text="{Binding Start_Date}" TextDecorations="Underline" Foreground="Blue" Cursor="Hand" />
                            <TextBlock Text=")" />
                        </WrapPanel>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
        </Grid>
    </Grid>
</UserControl>

Это мой метод XAML Click

        private void SelectionSprint_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {

            var item1 = ((ListBoxItem)lvDataBinding.SelectedValue).Content.ToString();

            MessageBox.Show(item1.ToString());
        }

Класс, в котором хранятся данные API

    public class SprintList
    {
        public List<Sprints> Sprints { get; set; }
    }

Также класс, в котором хранятся данные API

    public class Sprints
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string Slug { get; set; }
        public int Setup { get; set; }
        public string Start_Date { get; set; }
        public string End_Date { get; set; }
        public int ProjectId { get; set; }
        public string Created_At { get; set; }
        public string Updated_At { get; set; }
    }

1 Ответ

0 голосов
/ 19 марта 2020

Первая проблема в том, что ваш путь показывает, когда вы вызываете MessageBox, потому что у вас отсутствует ToString () в вашем классе. Если вы хотите напечатать или показать значения в MessageBox или консоли, вам необходимо перезаписать метод ToString () вашего класса Sprints.

Пример:

public class Sprints
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Slug { get; set; }
    public int Setup { get; set; }
    public string Start_Date { get; set; }
    public string End_Date { get; set; }
    public int ProjectId { get; set; }
    public string Created_At { get; set; }
    public string Updated_At { get; set; }

    public override string ToString()
    {
       return $"{Name}";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...