2016-09-01 6 views
0

Скажем, я использую xaml для создания telerik RadGridView.Как добавить строку в шаблон 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? Но для его использования вам нужно сделать это на основе кода (или получить экземпляр сетки на viewmodel). – 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> 

ИЛИ Для всех числовых столбцов

<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 не ошибается именем функции, это фактически добавляет ROW внизу. здесь: http://docs.telerik.com/devtools/silverlight/controls/radgridview/columns/aggregate-functions – Ivan

+0

Значит, вы все еще делаете это в коде? Я хочу использовать его в моей модели ViewModel. В противном случае мне придется перепроектировать проект. Это почти невозможно. – Bigeyes

Смежные вопросы