2012-02-10 8 views
0

私はリストビューで新しい行を作成しようとしています。WPF、ListView - > Row 3.Value = Row1.Foo + Row2Foo

この行は常に最後の要素になり、上の行のフィールドの合計です。例えば

:2列目の値を合計:

<ListView ItemsSource={Binding}> 
<ListView.View> 
    <GridView> 
     <GridViewColumn Header="Column1" DisplayMemberBinding="{Binding Path=VarX}"/> 
     <GridViewColumn Header="Column2" DisplayMemberBinding="{Binding Path=VarY}"/> 
    </GridView> 
</ListView.View> 
</ListView> 

今は、私が欲しいのは最初の列に「和である」のような文字列を表示する、という新しい行が表示されていますVarXおよびVarY。そうでない場合は

感謝と申し訳ありませんがよくありますが、これを達成することができますいくつかの方法があり、これらのいずれも技術的にそれを行うための良い方法であるが、彼らは動いてあなたを維持する必要があり

+0

ごめんなさいような単純なものを行うことができますが、あなたの質問はどんな意味がありません。最後の行は何であるはずですか?行を合計する必要がある場合は、そのようにするコードを記述する必要があります。 – GazTheDestroyer

+0

うん、私はそれを明確にするために私の質問を編集した。 ありがとう! –

+2

おそらく[GridViewsにフッターを追加するこの回答](http://stackoverflow.com/a/679996/302677)が役立ちます – Rachel

答えて

0

を説明しました。 MVVMのパラダイムに精通していると仮定します(「MVVM WPF」を検索するだけではない場合)。グリッドビュー

なし

あなたは必ずしもGridViewコントロールを使用せずに列にデータを表示するために満足している場合。たとえば、リストボックスを使用して項目のソースをIEnumerableに設定し、異なる型付き値のリストを渡すだけです。最後はあなたの要約行です。それぞれのタイプごとにaを指定すると、異なる行フォーマットになります。即ちGridViewの

return ((IEnumerable<object>)model.Pairs) 
    .Concat(new SummaryRow(model.Pairs)); 

とXAML

<ListBox Grid.IsSharedSizeScope ItemsSource={Binding}> 
    <ListBox.Resources> 
     <DataTemplate DataType="{x:Type IntPair}"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" SharedSizeGroup="XColumn"/> 
        <ColumnDefinition Width="Auto" SharedSizeGroup="YColumn"/> 
       </Grid.ColumnDefinitions> 
       <TextBlock Text="{Binding VarX}"> 
       <TextBlock Grid.Column="1" Text="{Binding VarY}"> 
      </Grid> 
     </DataTemplate> 
     <DataTemplate DataType="{x:Type SummaryRow}"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" SharedSizeGroup="XColumn"/> 
        <ColumnDefinition Width="Auto" SharedSizeGroup="YColumn"/> 
       </Grid.ColumnDefinitions> 
       <TextBlock Text="The sum is:"> 
       <TextBlock Grid.Column="1" Text="{Binding Total}"> 
      </Grid> 
     </DataTemplate> 
    </ListBox.Resources> 
</ListBox> 

あるいはわずかのIEnumerableを供給するためにビューモデルを使用します。だからあなたのモデルはIEnumerableをを持っているかもしれない、とあなたは

return (from x in model.Pairs 
    select new ConvertedResults 
    { 
     VarX = x.IntX.ToString(), 
     VarY = x.IntY.ToString() 
    }) 
    .Concat(new [] { new ConvertedResults 
    { 
     VarX = "The sum is:", 
     VarY = (from y in model.Pairs select x.VarX).Sum().ToString() 
    }); 
関連する問題