我正在使用 telerik 的 RadGridView 在我的 WPF 应用程序中。其中一个列具有以下功能,
当用户更改列的值时,会触发一个命令作为事件并显示弹出窗口。使用弹出窗口的结果(是或否)我正在更新集合。
现在我在这里遇到了一个问题。
问题:
用户正在更改该列中一行的值,在警报出现之前,他正在更改同一列的另一行。因此,应用程序以不同的方式工作,功能崩溃。
尝试的解决方法:
我尝试在事件触发后禁用网格,并在完成函数后启用。但是即使在事件触发之前,用户也非常快地更改了值。
XAML:
当用户更改列的值时,会触发一个命令作为事件并显示弹出窗口。使用弹出窗口的结果(是或否)我正在更新集合。
现在我在这里遇到了一个问题。
问题:
用户正在更改该列中一行的值,在警报出现之前,他正在更改同一列的另一行。因此,应用程序以不同的方式工作,功能崩溃。
尝试的解决方法:
我尝试在事件触发后禁用网格,并在完成函数后启用。但是即使在事件触发之前,用户也非常快地更改了值。
XAML:
<telerik:GridViewDataColumn Name="grdItemBuildColumn" DataMemberBinding="{Binding Build, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsReadOnlyBinding="{Binding IsEnable, Mode=OneWay, UpdateSourceTrigger= PropertyChanged}">
<telerik:GridViewDataColumn.CellEditTemplate> <DataTemplate>
<telerik:RadMaskedNumericInput Value="{Binding Build, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Mask="#1.0" Placeholder=" "
TextMode="PlainText" AllowInvalidValues="False" IsClearButtonVisible="False" AutoFillNumberGroupSeparators="False"ext:MaskedInputExtensions.Minimum="0" SelectionOnFocus="SelectAll" AcceptsReturn="False">
<i:Interaction.Triggers> <i:EventTrigger EventName="ValueChanged">
<i:InvokeCommandAction Command="{Binding BuidValueChangedCommand, Source={StaticResource MarketSeriesViewModel}}" />
</i:EventTrigger>
</i:Interaction.Triggers>
</telerik:RadMaskedNumericInput>
</DataTemplate>
</telerik:GridViewDataColumn.CellEditTemplate>
</telerik:GridViewDataColumn>
命令:
public ICommand BuidValueChangedCommand { get { return new RelayCommand(BuildValueChanged); } }
ViewModel:
private void BuildValueChanged()
{
// Ask confirmation for delete.
if (ShowMessages.MessageBox("This will be removed from the collection", "Application"))
{
DeleteItem(SelectedItem.Id)
}
else
{
Item bo = RestoreBuild(SelectedItem);
SelectedItem = bo;
}
}
我只需要像限制用户在事件触发
之前不更改第二个值,直到他从弹出窗口中选择了某些东西(是/否)这样的东西。
有人能帮帮我吗?