使用MVVM绑定到GridView的selectionchanged命令时发出问题

时间:2014-09-24 17:19:55

标签: gridview mvvm using

我正在为我的应用程序使用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;
            ....

        }
    }

注意:视图中功能的唯一区别是额外的数据库保存。

其余代码很常见

0 个答案:

没有答案