如何使用WPF将ListView中的信息显示到TextBox中

时间:2015-10-23 22:54:31

标签: c# wpf listview

您好我正在创建一个汽车应用以显示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);


            }
        }

3 个答案:

答案 0 :(得分:0)

尝试格式化项目变量或者为了更好的练习在类中创建一个方法,并对该方法进行所有格式化工作。然后简单地调用它。

能否请你提供

  

字符串项

值。

答案 1 :(得分:0)

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

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

祝你顺利完成任务。

答案 2 :(得分:0)

从当前设计中,您可以使用“\ n”简单地替换空格(“”),以实现每个属性的多个记录。因此,您将使用GetCar属性进行所有格式化。如果您需要对每个属性进行更多控制,可以将视图重新设计为this之类的内容。但这取决于您的最终要求。