2015-10-23 31 views
0

你好我創建一個應用程序的車在ListView顯示汽車的名單,我希望用戶能夠點擊列表項,並將其顯示在一個TextBox TextBox。目前它的工作方式,但它使用ToString方法,我根本不能格式化,我想在每條記錄的末尾添加一個新行,因此每個屬性都在自己的行上,並且通常可以更好地控制它顯示。有沒有更好的方式做到這一點,然後我做了什麼。生病包括我所有的代碼,所以你擁有一切。 我通常在提問時非常平均,所以我的問題詢問和代碼的任何意見將不勝感激。 謝謝..如何從一個ListView顯示信息爲使用WPF

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

從目前的設計,你簡單的「與\ n‘取代你的空間(」)’,實現每個屬性的多個記錄。因此,您將使用GetCar屬性完成所有格式。如果您需要對每個屬性進行更多控制,則可以重新設計您的視圖,如this。但這取決於你的最終要求是什麼。

+0

哇,這是如此明顯,不能相信我錯過了它。你只能把屬性放在ToString重寫中,或者我可以如何將所有的格式放入ToString中,而不使用單獨的屬性來創建空格/換行符? – user3488019

+0

沒有限制,您只能放置屬性。你可以(如果你願意)把所有的格式化邏輯放在那裏。 – asb

+0

我最後所做的只是返回string.Format(「所有的細節和格式在這裏」)'感謝您的幫助,但我只是看了太久後錯過了簡單的東西。 – user3488019

0

嘗試格式化項變量或爲一個更好的做法創建類的方法和做該方法的所有格式設置工作。然後簡單地調用它。

能否請您爲我提供

字符串項

值。

0

你只需要文本框的Text屬性綁定到ListView控件的的SelectedItem。不需要處理程序。

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

祝你好運,你的成功任務。

相關問題