2016-06-06 10 views
1

Ich verwende WPF, um eine kleine App zu erstellen, die zwei Messungen (in Zoll) in eine endgültige quadratische Antwort umwandelt. Dann, nachdem ich auf einen "Berechnen" -Knopf geklickt habe, sollte er die Informationen zu ListView hinzufügen. Bis jetzt bin ich in der Lage, das endgültige Quadrat zu berechnen und eine Zeile von Informationen zu der Liste hinzuzufügen, nachdem ich auf den "Berechnen" -Knopf geklickt habe, kann es nicht mehr zu dem ListView hinzugefügt werden. Wie bekomme ich mehrere Zeilen mit verschiedenen Informationen, die zu ListView hinzugefügt werden?Listenansicht nach neuem Eintrag aktualisieren

C#:

public partial class MainWindow : Window 
{ 
    List<Dimension> dimensionList = new List<Dimension>(); 

    public MainWindow() 
    { 
     InitializeComponent(); 

    } 

    private void calculate_bttn_Click(object sender, RoutedEventArgs e) 
    { 
     Calculate();   
    } 

    private void Calculate() 
    { 
     //----get height from textbox-------------------print height to console----// 
     int height = Int32.Parse(height_TB.Text); Console.WriteLine("Height: " + height); 

     //----get width from textbox--------------------print width to console----// 
     int width = Int32.Parse(width_TB.Text); Console.WriteLine("Widht: " + width); 

     //----converting square inches into square feet----// 
     int toSquareInches = height * width; 
     int toSquareFeet = toSquareInches/144; 

     //----create new dimension----// 
     Dimension dim = new Dimension(); 

     //----set dimension properties----//// 
     dim.height = height; 
     dim.width = width; 
     dim.sqrInches = toSquareInches; 
     dim.sqrFeet = toSquareFeet; 

     //----add new dimension to dimensionList----// 
     dimensionList.Add(dim); 

     //----set binding source for listview----// 
     listView.ItemsSource = dimensionList; 

     //----display final square footage----// 
     total_label.Content = "Total: " + toSquareFeet.ToString() + " square feet"; 
    } 
} 


class Dimension 
{ 
    public int height { get; set; } 
    public int width { get; set; } 
    public int sqrInches { get; set; } 
    public int sqrFeet { get; set; } 

    public override string ToString() 
    { 
     return "height:" + height.ToString() + " width:" + width.ToString() + " Sqr inches:" + sqrInches.ToString() + " Sqr Feet:" + sqrFeet.ToString(); ; 
    } 
} 

XAML:

<Window x:Class="Conversion.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:Conversion" 
    mc:Ignorable="d" 
    Title="Converter" Height="337.333" Width="397.667"> 
    <Grid Margin="0,0,2,0"> 
     <TextBox x:Name="height_TB" HorizontalAlignment="Left" Height="23" Margin="10,16,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/> 
     <TextBox x:Name="width_TB" HorizontalAlignment="Left" Height="23" Margin="10,44,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="120"/> 
     <Label x:Name="total_label" Content="Total:" HorizontalAlignment="Left" Margin="10,97,0,0" VerticalAlignment="Top"/> 
     <Button x:Name="calcuate_bttn" Content="CALCULATE" HorizontalAlignment="Left" Margin="10,72,0,0" VerticalAlignment="Top" Width="120" Click="calculate_bttn_Click"/> 
     <Label x:Name="height_label" Content="height" HorizontalAlignment="Left" Margin="135,12,0,0" VerticalAlignment="Top"/> 
     <Label x:Name="width_label" Content="width" HorizontalAlignment="Left" Margin="135,40,0,0" VerticalAlignment="Top" RenderTransformOrigin="-0.111,-2.413"/> 
     <ListView x:Name="listView" HorizontalAlignment="Left" Height="168" Margin="10,128,0,0" VerticalAlignment="Top" Width="368"> 
      <ListView.View> 
       <GridView> 
        <GridViewColumn/> 
       </GridView> 
      </ListView.View> 
     </ListView> 

    </Grid> 
</Window> 

Antwort

1

Ihr ursprünglicher Code wurde mehrere Elemente hinzugefügt, aber die Benutzeroberfläche wurde mit den Änderungen nicht informiert zu werden. Das eine Element, das angezeigt wird, weil beim Festlegen von ItemsSource eine Änderung der Eigenschaft ausgelöst wurde (Formular null bis dimensionList). Bei Ihren nachfolgenden Klicks haben Sie dieselbe Sammlung festgelegt (dimensionList), die die Änderung der Eigenschaft nicht gemeldet hätte, da es sich um dasselbe Objekt handelte.

Sie können eine ObservableCollection verwenden, die die Benutzeroberfläche jedes Mal benachrichtigt, wenn eine neue Dimension hinzugefügt oder aus der Sammlung entfernt wird.

public partial class MainWindow : Window 
{ 
    ObservableCollection<Dimension> dimensionList = new ObservableCollection<Dimension>(); 

    public MainWindow() 
    { 
     InitializeComponent(); 
     //----set binding source for listview----// 
     listView.ItemsSource = dimensionList; 
    } 

    private void calculate_bttn_Click(object sender, RoutedEventArgs e) 
    { 
     Calculate();   
    } 

    private void Calculate() 
    { 
     //----get height from textbox-------------------print height to console----// 
     int height = Int32.Parse(height_TB.Text); Console.WriteLine("Height: " + height); 

     //----get width from textbox--------------------print width to console----// 
     int width = Int32.Parse(width_TB.Text); Console.WriteLine("Widht: " + width); 

     //----converting square inches into square feet----// 
     int toSquareInches = height * width; 
     int toSquareFeet = toSquareInches/144; 

     //----create new dimension----// 
     Dimension dim = new Dimension(); 

     //----set dimension properties----//// 
     dim.height = height; 
     dim.width = width; 
     dim.sqrInches = toSquareInches; 
     dim.sqrFeet = toSquareFeet; 

     //----add new dimension to dimensionList----// 
     dimensionList.Add(dim);   

     //----display final square footage----// 
     total_label.Content = "Total: " + toSquareFeet.ToString() + " square feet"; 
    } 
} 
+0

funktioniert super danke! – BlakeWebb

+0

@BlakeWebb, Froh, zu helfen. Fröhliche Codierung !!! – Nkosi

Verwandte Themen