Telerik RadGridView 插入新行 MVVM
Telerik RadGridView insert new row MVVM
我的视图中有一个 RadGridView,我将其 ItemSource 绑定到我的 ViewModel 中的列表。一切正常。但是如何使用 MVVM 方法插入新行。我宁愿不为此使用代码隐藏。
<telerik:RadGridView x:Name="radGridView" Grid.Row="1" ShowGroupPanel="False" IsFilteringAllowed="False" ItemsSource="{Binding Lieferadressen}" ColumnWidth="*" />
有人知道如何实现吗?
我在 Telerik 文档中找不到任何关于使用 MVVM 插入新行的内容。
我自己想出来了,我要 post 为那些挣扎的人提供答案。
所以基本的方法是使用交互触发器。为此,您必须通过 NuGet 将 System.Windows.Interactivity
包添加到您的项目中。
然后在包含 RadGridView 的 xaml 文件中添加以下 2 个命名空间:
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
}
}
我的视图中有一个 RadGridView,我将其 ItemSource 绑定到我的 ViewModel 中的列表。一切正常。但是如何使用 MVVM 方法插入新行。我宁愿不为此使用代码隐藏。
<telerik:RadGridView x:Name="radGridView" Grid.Row="1" ShowGroupPanel="False" IsFilteringAllowed="False" ItemsSource="{Binding Lieferadressen}" ColumnWidth="*" />
有人知道如何实现吗?
我在 Telerik 文档中找不到任何关于使用 MVVM 插入新行的内容。
我自己想出来了,我要 post 为那些挣扎的人提供答案。
所以基本的方法是使用交互触发器。为此,您必须通过 NuGet 将 System.Windows.Interactivity
包添加到您的项目中。
然后在包含 RadGridView 的 xaml 文件中添加以下 2 个命名空间:
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
}
}