您好我正在创建一个汽车应用以显示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);
}
}
答案 0 :(得分:0)
尝试格式化项目变量或者为了更好的练习在类中创建一个方法,并对该方法进行所有格式化工作。然后简单地调用它。
能否请你提供
字符串项
值。
答案 1 :(得分:0)
您只需将Textbox的Text属性绑定到ListView的SelectedItem即可。不需要处理程序。
Text="{Binding Path=SelectedItem, ElementName=carListDisplay}"
祝你顺利完成任务。
答案 2 :(得分:0)
从当前设计中,您可以使用“\ n”简单地替换空格(“”),以实现每个属性的多个记录。因此,您将使用GetCar属性进行所有格式化。如果您需要对每个属性进行更多控制,可以将视图重新设计为this之类的内容。但这取决于您的最终要求。