2016-09-01 10 views
0

xamlを使用して、RadiGridViewを作成します。MVVMパターンに行を追加するには?

<telerik:RadGridView x:Name="myRadGridView" 
          Width="1000" 
          IsReadOnly="True" 
          ValidatesOnDataErrors="None" 
          AutoGenerateColumns="False" 
          IsFilteringAllowed="False" 
          ShowGroupPanel="False" 
          ShowColumnFooters="False" 
          CanUserResizeColumns="False" 
          CanUserFreezeColumns="False" 
          SelectionMode="Single" 
          CanUserReorderColumns="False" 
          CanUserSortColumns="False" 
          CanUserInsertRows="False" 
          CanUserDeleteRows="False" 
          CanUserSelect="True" 
          RowIndicatorVisibility="Visible" 
          Height="250" 
           ScrollViewer.VerticalScrollBarVisibility="Visible" 
          ItemsSource="{Binding Information}" 
          SelectedItem="{Binding SelectedItem, Mode=TwoWay}" 
          SelectionChanged="myRadGridView_SelectionChanged" 
      > 
      <telerik:RadGridView.Columns> 
      <telerik:GridViewColumn /> 
      <telerik:GridViewColumn /> 
      ..... 
      </telerik:RadGridView.Columns> 

多くの列があります。 私のViewModelからデータを取得します。今度は、新しい行を追加して上記の行の合計値を取得します。

私の質問は、ViewModelに行を追加する方法です。

+0

Telerik.Windows.Data.SumFunctionを確認しましたか?しかし、それを使用するには、コードビハインドでそれを行う必要があります(または、ビューモデル上のグリッドのインスタンスを取得する必要があります)。 – Ivan

+0

@Ivanコードビハインドでは使用しません。 ViewModelでグリッドのインスタンスを取得する方法がわかりません。 – Bigeyes

+0

@Bigeyes、アイテムソース – Nkosi

答えて

0

はこれを試してください:あなたはXAML(必要はありません、他のコード)

<telerik:GridViewDataColumn Header="Quantity" 
          DataMemberBinding="{Binding ProdQuantity}" 
          UniqueName="Quantity"> 
    <telerik:GridViewDataColumn.AggregateFunctions> 
     <telerik:SumFunction Caption="Sum: " /> 
    </telerik:GridViewDataColumn.AggregateFunctions> 
</telerik:GridViewDataColumn> 

OR全ての数値列

<telerik:RadGridView x:Name="myRadGridView" 
        Width="1000" 
        IsReadOnly="True" 
        ...    

        ShowColumnFooters="True" 
        AutoGeneratingColumn="GridView_AutoGeneratingColumn" 

        ItemsSource="{Binding Information}" 
        SelectedItem="{Binding SelectedItem, Mode=TwoWay}" 
        SelectionChanged="myRadGridView_SelectionChanged" 
        > 

の場合を経由して特定の列のためにそれを行うことができます。これにより

をコード内:

private void GridView_AutoGeneratingColumn(object sender, GridViewAutoGeneratingColumnEventArgs e) 
    { 
     if(!e.Column is GridViewDataColumn) 
      return; 
     GridViewDataColumn col = (e.Column as GridViewDataColumn); 
     if (col.DataType != null) 
     { 
      if (col.DataType == typeof(Int32) || col.DataType == typeof(long) || col.DataType == typeof(Double))   
       e.Column.AggregateFunctions.Add(new SumFunction());    
     } 
    } 

列はGridViewDataColumnである必要があります。

+0

こんにちは、あなたの入力に感謝します。私は新しい列を追加していません。私の目標は、あなたが私の質問をもう一度読むことができたら、新しい行を一番下に追加することです。行!列はありません。 – Bigeyes

+0

@Bigeyesは関数名であると誤解されることはありませんが、実際には下部に行が追加されます。 ここをクリックしてください:http://docs.telerik.com/devtools/silverlight/controls/radgridview/columns/aggregate-functions – Ivan

+0

それでは、まだコードの中でそれをやっていますか?私はViewModelでそれを使いたいです。それ以外の場合は、プロジェクトを再エンジニアリングする必要があります。ほとんど不可能です。 – Bigeyes

関連する問題