2016-04-09 42 views
0

選択したアイテムの合計値を表示しようとしています。選択したアイテムはListViewにあります。項目の値はリストに表示されますが、項目の合計値がテキストボックス内に表示されます。私のコードは以下の通りです:ListViewの列を追加する方法

Basket.xaml

 private static ObservableCollection<Menu.PassedData> passedData = new ObservableCollection<Menu.PassedData>(); 

private double totalValue; 
     public double TotalValue 
     { 
      get { return totalValue; } 
      set 
      { 
       totalValue = value; 
       OnPropertyChanged("TotalValue"); 
      } 
     } 

    protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    Menu.PassedData data = e.Parameter as Menu.PassedData; 

    if (data != null) //If data is not 0 
    { 
     PassedData.Add(data); //Increment data in list view 

     double tempTotalValue = 0; 
     foreach (var record in PassedData) 
     { 
      tempTotalValue = tempTotalValue + record.Value; 
     } 
     TotalValue = tempTotalValue; 
    } 
} 


    } 

値はしたがって、基本的Value列を追加

<ListBox x:Name="listBox1" HorizontalAlignment="Left" Height="265" Margin="278,175,0,0" VerticalAlignment="Top" Width="112"> 
     <ListView x:Name="PriceView" ItemsSource="{Binding PassedData}" HorizontalAlignment="Left" VerticalAlignment="Center"> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="auto"/> 
          <ColumnDefinition Width="auto"/> 
         </Grid.ColumnDefinitions> 
         <Grid.RowDefinitions> 
          <RowDefinition Height="auto"/> 
         </Grid.RowDefinitions> 
         <!--<TextBox Grid.Column="0" Text="{Binding Name}" IsReadOnly="True" /> !--> 
         <TextBox Grid.Column="1" Text="{Binding Value}" IsReadOnly="True" /> 
        </Grid> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
    </ListBox> 

(Basket.xaml)に格納されているリストリストビューで入力し、テキストボックスに表示します。

答えて

0

これを達成する方法はたくさんあります。あなたは、例えば、あなたのコードをも使用する:あなたのBasket.xaml.csTotalValueプロパティを追加で :

private double totalValue; 
public double TotalValue 
{ 
    get { return totalValue; } 
    set 
    { 
     totalValue = value; 
     OnPropertyChanged("TotalValue"); 
    } 
} 

そしてあなたOnNavigatedTo方法であなただけの合計値を得るためにあなたのリストのすべての要素を反復処理することができます

protected override void OnNavigatedTo(NavigationEventArgs e) 
{ 
    Menu.PassedData data = e.Parameter as Menu.PassedData; 

    if (data != null) //If data is not 0 
    { 
     PassedData.Add(data); //Increment data in list view 

     double tempTotalValue = 0; 
     foreach (var record in PassedData) 
     { 
      tempTotalValue = tempTotalValue + record.Value; 
     } 
     TotalValue = tempTotalValue; 
    } 
} 

そして、ちょうどあなたのビューBasket.xamlTextblockを言うことができますし、この値をバインドします

<TextBlock Text="{Binding TotalValue}"></TextBlock> 
+0

お返事ありがとうございます。私はあなたの答えを実装していますが、私はアプリを実行するときに、アイテムを追加するアイテムの数に関係なく、合計テキストブロックは静的にしか表示されません。質問は更新されます。 –

+0

'Basket'クラスは' INotifyPropertyChanged'インターフェースを実装していますか? – SteppingRazor

+0

それは何ですか? –

0

Getting WPF ListView.SelectedItems in ViewModelのようなものが役に立ちます。次に、あなたのコマンドでlinqを使ってすべての値の合計を取得し、この値でいくつかのプロパティ(bound)を設定します。

関連する問題