我正在为我的应用程序使用MVVM模型。我有2个视图,每个包含一个GridView。它们都绑定到ViewModel中的同一命令,以便更改GridView的选择。
<GridControl Grid.Row="0"
Grid.Column="1"
x:Name="TaskItemsGridView"
SelectionChangedCommand="{Binding ShowSelectedTaskCommand}"
ItemsSource="{Binding ActiveTaskList, Mode=TwoWay}"
SelectedItem="{Binding ActiveTask, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
ShowSelectedTaskCommand正在调用一个执行某些功能并更新ActiveTask的函数。
我在这里遇到两个问题。
a)我需要进行额外的数据库保存,然后在从View1调用选择更改命令时设置ActiveTask。我的问题是,即使我将命令分开来处理这种情况,这两个命令都会执行,因为我需要在其间更新ActiveTask。因此,如果一个命令更新ActiveTask,它将触发SelectionChanged以获取其他命令。我怎样才能解决这个问题。 b)由于在两种情况下都调用了这两个函数,我如何添加一些条件来执行db save。
以下是我的参考资料
private void ShowSelectedTask()
{
if (ActiveTask.EventId != TaskId && !string.IsNullOrEmpty(ActiveTaskName))
UpdateTaskInformation(TaskId); // It updates ActiveTask
// TO DO: DB save to be performed if this command is invoked from View1.
if (ActiveTask != null)
{
TaskId = ActiveTask.EventId;
....
}
}
注意:视图中功能的唯一区别是额外的数据库保存。
其余代码很常见