如何将视图模型用于不同类型的项目



我有一个由多个子项目组成的相当复杂的项目。

  • 应用程序
    • WPF应用程序
    • Windows应用商店
    • Windows Phone应用程序
  • 合同
    • 服务合同(针对WPF的WCF)
    • 服务控制器(适用于windows phone的WebAPi)
  • 基础设施(EventAggregator/Prism)
  • ViewModels(最好可用于WPF、Windows Phone和Windows应用程序)
  • 视图(WPF特定)

只要我专注于WPF,我就没有问题。在我的视图模型中,我可以调用Web服务并用所需的数据填充它。对于WindowsPhone/WindowsStore应用程序,我不能总是使用WCF。但是视图模型保持不变。如何将正确的服务呼叫"发送"到我的视图模型?

public async override Task<object> RetrieveItems()
{
if ((Customer != null))
{
return await Task.Run(() => Current.ApplicationService.Schedule_Appointments_GetItems_By_Relation(Customer.Relation_ID));
}
else
{
return null;
}
}

只要是wcf服务,这个函数就可以正常工作。是否有可能根据使用此视图模型的视图更改此函数?

以下是一个视图模型的完整代码:

namespace ISynergy.Modules.Relations
{
public class Customer_Activities_ViewModel : Customer_Base_ViewModel
{
public Customer_Activities_ViewModel()
: base()
{
}
public override void Add()
{
throw new NotImplementedException();
}
public override Task Delete(object vItem)
{
throw new NotImplementedException();
}
public override void Edit(object vItem)
{
throw new NotImplementedException();
}
public async override Task<object> RetrieveItems()
{
if ((Customer != null))
{
return await Task.Run(() => Current.ApplicationService.Schedule_Appointments_GetItems_By_Relation(Customer.Relation_ID));
}
else
{
return null;
}
}
}

}

当然,这同样适用于其他被覆盖的程序/功能(添加、删除和编辑)

好的,我想我得到了答案。我任何人有任何建议或意见,请随时提供。也许这个答案可以帮助其他人解决同样的问题。

解决方案包括两个调整。

public async override Task<object> RetrieveItems()
{
if ((Customer != null))
{
return await Task.Run(GetItems_Action);
//return await Task.Run(() => Current.ApplicationService.Schedule_Appointments_GetItems_By_Relation(Customer.Relation_ID));
}
else
{
return null;
}
}

以及添加下一行以允许从视图进行调整。

public Action Add_Action;
public Action<object> Edit_Action;
public Func<object, Task> Delete_Action;
public Func<Task<object>> GetItems_Action;

相关内容

  • 没有找到相关文章

最新更新