如何使用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);
}
}
从当前的设计中,您只需将空格(" ")替换为"'n"来实现每个属性的多个记录。你会在GetCar属性中进行所有格式化。如果需要对每个属性进行更多的控制,可以这样重新设计视图。但这取决于你的最终要求是什么。
你只需要将Textbox的Text属性绑定到ListView的SelectedItem。不需要处理程序。
Text="{Binding Path=SelectedItem, ElementName=carListDisplay}"
祝你以后的作业顺利。