Telerik RadGridView вставить новый ряд MVVM - PullRequest
0 голосов
/ 09 июня 2018

У меня есть RadGridView внутри моего представления, и я связываю его ItemSource со списком внутри моей ViewModel.Все отлично работаетНо как мне вставить новую строку с подходом MVVM.Я бы предпочел не использовать код для этого.

<telerik:RadGridView x:Name="radGridView" Grid.Row="1" ShowGroupPanel="False" IsFilteringAllowed="False" ItemsSource="{Binding Lieferadressen}" ColumnWidth="*" />

Кто-нибудь знает, как этого добиться?

Я не могу найти ничего в документации Telerik о вставке новых строк с MVVM.

1 Ответ

0 голосов
/ 11 июня 2018

Я понял это сам, и я опубликую свой ответ для тех, кто борется с ним.

Таким образом, основной подход заключается в использовании триггеров взаимодействия.Для чего вам нужно добавить пакет System.Windows.Interactivity в ваш проект через NuGet.

Затем добавьте следующие 2 пространства имен в ваш файл xaml, который содержит ваш RadGridView:

xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions"

Затем вы настраиваетеваш RadGridView с триггерами.

<telerik:RadGridView x:Name="radGridView" Grid.Row="1" ShowGroupPanel="False" IsFilteringAllowed="False" ItemsSource="{Binding Lieferadressen}" ColumnWidth="*">
    <i:Interaction.Triggers>
        <i:EventTrigger EventName="RowEditEnded">
            <ei:CallMethodAction TargetObject="{Binding}" MethodName="OnLieferadresseRowEditEnded" />
        </i:EventTrigger>
    </i:Interaction.Triggers>
</telerik:RadGridView>

Здесь важно EventName.

Тогда в вашей ViewModel:

public void OnLieferadresseRowEditEnded(object sender, GridViewRowEditEndedEventArgs e)
{
    var row = e.Row as GridViewRow;

    if (e.EditAction == GridViewEditAction.Cancel)
    {
        return;
    }
    else if (e.EditOperationType == GridViewEditOperationType.Insert)
    {
        //Insert the entry in the data base
    }
    else if (e.EditOperationType == GridViewEditOperationType.Edit)
    {
        //Update the entry in the data base
    }
}
...