2016-04-17 4 views
0

Hi Ich versuche, Elemente zu einem Listview hinzufügen, aber den folgenden Fehler erhalten, 'ListViewItem' enthält keinen Konstruktor, der 1 Argument dauert. Ich bekomme den Fehler hier neues ListViewItem (row); Ich benutze Windows Phone 8.1 in C#.'ListViewItem' enthält keinen Konstruktor, der 1 Argument, Windows-Telefon C#

protected override void OnNavigatedTo(NavigationEventArgs e) 
    { 
     int totalq = int.Parse(textBox.Text) + app.vanilla; 
     textBox.Text = totalq.ToString(); 
     double totalvanilla = Convert.ToDouble(totalq)* 1.50; 
     textBox_Copy.Text = totalvanilla.ToString(); 
     //listBox.Items.Add(totalq.ToString() + "Vanilla"); 

     string[] row = { totalq.ToString(),"vanilla" }; 
     var listViewItem = new ListViewItem(row); 

     listView.Items.Add(listViewItem); 


    } 
+0

bitte Ihre Listview XAML-Code hinzufügen, in dem Sie die Listenansicht Daten verwenden möchten –

Antwort

0

Sie senden Zeichenfolge als Parameter an listviewtem.ListViewItem hat Inhalt Eigenschaft,

gefällt das

listView.Items.Add(new ListViewItem{Content = whateveryourstring}); 
+0

Es gibt mir system.string, irgendeine Idee warum? – samuel

+0

Wenn ich das Programm starte. – samuel

+0

Ich bekomme Sie nicht, bitte posten Sie den Fehler – Sajeetharan

2

Ich glaube, du bist der System.Windows.Forms.ListViewItem (die für die Aufnahme einer einen Konstruktor String-Array) mit dem XAML-basierten System.Windows.Controls.ListViewItem.

würden Sie diese in einer anderen Art und Weise verwenden:

XAML:

<ListView x:Name="listView"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Header="Name" DisplayMemberBinding="{Binding Path=Name}"/> 
      <GridViewColumn Header="Qunatity" DisplayMemberBinding="{Binding Path=Quantity}"/> 
     </GridView> 
    </ListView.View> 
</ListView> 

Code:

int totalq = 23; 
var row = new { Quantity = totalq, Name = "vanilla" }; 

listView.Items.Add(row); 

Edit:

Wenn Gridview ist kein Option für Sie und Sie wollen/müssen alles an Ort und Stelle setzen selbst, können Sie folgende Vorgehensweise (auf this answer basiert) verwenden:

<ListView x:Name="listView"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid VerticalAlignment="Center"> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="50" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 

       <TextBlock Grid.Column="0" Text="{Binding Quantity}" /> 
       <TextBlock Grid.Column="1" Text="{Binding Name}" /> 
      </Grid> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
+0

Gridview Spalte existiert nicht in Windows Phone 8.1. Es zeigt einen Fehler an, wenn ich diese Methode verwende. – samuel

+0

Danke, das hat mich gerettet! – CodeMonkey

0

Ich denke, Sie eine Klasse mit der Eigenschaft hinzufügen müssen, die Sie im Hinblick auf die angezeigt werden sollen. So.

public class ListModel { 
    public string TotalQuantity { set; get; } 
    public string Name { set; get; } 
} 

Dann versuchen Sie dieses XAML

xmlns:toolkit="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone.Controls.Toolkit" 

<toolkit:ListView Name="listView"> 
    <toolkit:ListView.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="100" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions>      
       <TextBlock Text="{Binding TotalQuantity}" /> 
       <TextBlock Grid.Column="1" Text="{Binding Name}" /> 
      </Grid> 
     </DataTemplate> 
    </toolkit:ListView.ItemTemplate> 
</toolkit:ListView> 

Finaly fügen Sie die ItemSource für Listenansicht

int totalq = int.Parse("3") + 2; 
textBox.Text = totalq.ToString(); 
double totalvanilla = Convert.ToDouble(totalq) * 1.50; 
textBox_Copy.Text = totalvanilla.ToString(); 
listBox.Items.Add(totalq.ToString() + "Vanilla"); 

ListViewItems = new ObservableCollection<ListModel>(); 
ListViewItems.Add(new ListModel() 
{ 
    TotalQuantity = totalq.ToString(), 
    Name = "vanilla" 
}); 
listView.ItemsSource = ListViewItems;