如何使用WPF将列表视图中的信息显示到文本框中

本文关键字:显示 信息 文本 WPF 列表 视图 何使用 | 更新日期: 2023-09-27 18:19:11

嗨,我正在创建一个汽车应用程序来显示ListView中的汽车列表,我希望用户能够单击列表项并在TextBox中显示。目前它的工作原理,但它使用ToString方法,我不能格式化它,我想在每条记录的末尾添加一个新的行,所以每个属性都在自己的行,通常有更多的控制它如何显示。还有比我做的更好的方法吗?我将包括我所有的代码,所以你有一切。我通常在提问方面很一般,所以任何关于我的提问和我的代码的建议都会非常感激。谢谢. .

class BaseCarClass
            {
                private string carBrand;
                private string carModel;
                private int yearModel;
                private int carPrice;

                //CarBrand Property
                public string CarBrand
                {
                    get
                    {
                        return carBrand;
                    }//end get
                    set
                    {
                        carBrand = value;
                    }//end set
                }//end property CarBrand

                public string CarModel
                {
                    get
                    {
                       return carModel;
                    }
                    set
                    {
                        carModel = value;
                    }
                }
                public int YearModel
                {
                    get
                    {
                        return yearModel;
                    }
                    set
                    {
                        yearModel = value;
                    }
                }
                public int CarPrice
                {
                    get
                    {
                        return carPrice;
                    }
                    set
                    {
                        carPrice = value;
                    }
                }
                //BaseClass Constructor
                public BaseCarClass(string car_brand, string car_model, int year_model, int car_price)
                {
                    CarBrand = car_brand;
                    CarModel = car_model;
                    YearModel = year_model;
                    CarPrice = car_price;
                }//end base class constructor
                public string space { get { return " "; } }
                public string GetCar
                {
                    get
                    {
                        return CarBrand+space+CarModel;
                    }
                }

                public override string ToString()
                {
                  return GetCar;
                }
            }

<Window x:Class="Assignment4ITC521.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:Assignment4ITC521"
            mc:Ignorable="d"
            Title="MainWindow" Height="350" Width="550">
        <DockPanel>
            <Grid>
                <ListView Margin="10,10,152,10" Name="carListDisplay" SelectionChanged="carListDisplay_SelectionChanged">
                    <ListView.View>
                        <GridView>
                            <GridViewColumn Header="Brand" Width="120" DisplayMemberBinding="{Binding CarBrand}" />
                            <GridViewColumn Header="Model" Width="150" DisplayMemberBinding="{Binding CarModel}" />
                            <GridViewColumn Header="Year" Width="50" DisplayMemberBinding="{Binding YearModel}" />
                            <GridViewColumn Header="Price $" Width="50" DisplayMemberBinding="{Binding CarPrice}" />
                        </GridView>
                    </ListView.View>
                </ListView>
                <TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="299" Margin="395,10,0,0" TextWrapping="Wrap" Text="" VerticalAlignment="Top" Width="137" />
            </Grid>
        </DockPanel>
    </Window>


public partial class MainWindow : Window
        {
            private List<BaseCarClass> myCars = new List<BaseCarClass>();

     public MainWindow()
            {
                InitializeComponent();
                myCars.Add(new BaseCarClass("Ford", "Falcon", 1999, 2000));
                myCars.Add(new BaseCarClass("Holden", "Berina", 2008, 5000));
                myCars.Add(new BaseCarClass("Ford", "Mustang", 1967, 25000));
                //this.DataContext = myCars;
                carListDisplay.ItemsSource = myCars;

            }
            private void carListDisplay_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                string item = carListDisplay.Items[carListDisplay.SelectedIndex].ToString();
                textBox1.Text = (item);

            }
        }

如何使用WPF将列表视图中的信息显示到文本框中

从当前的设计中,您只需将空格(" ")替换为"'n"来实现每个属性的多个记录。你会在GetCar属性中进行所有格式化。如果需要对每个属性进行更多的控制,可以这样重新设计视图。但这取决于你的最终要求是什么。

你只需要将Textbox的Text属性绑定到ListView的SelectedItem。不需要处理程序。

Text="{Binding Path=SelectedItem, ElementName=carListDisplay}"

祝你以后的作业顺利。