【发布时间】:2018-10-29 02:47:09
【问题描述】:
我不知道这是否是一个好习惯,但我想在“Views”和“ViewModels”目录中使用子目录
我现在有这个代码
namespace Project.Universal.ViewModels.Sales
{
public class SalesListViewModel:ViewModelBase
{
// Properties
private string _test;
private ICollection<Sale> _sales;
public string Test
{
get => _test;
set => SetProperty(ref _test, value);
}
public ICollection<Sale> Sales {
get => _sales;
private set
{
}
}
// Services
private readonly IStandardService<Sale> _salesService;
// Commands
public DelegateCommand Update { get;}
// Constructor
public SalesListViewModel(IStandardService<Sale> salesService)
{
Debug.WriteLine(">>>> Initializing SalesListViewModel, trying to set _salesService.");
_salesService = salesService;
Debug.WriteLine(">>>> Delegating command to update SalesListViewModel.");
Update = new DelegateCommand(async () =>
{
Sales = await _salesService.GetAsync();
Test = "Test";
});
}
}
}
这是我的查看页面
<mvvm:SessionStateAwarePage
x:Class="Project.Universal.Views.Sales.SalesListPage"
mvvm:ViewModelLocator.AutoWireViewModel="True"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:Project.Universal.Views.Sales"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
xmlns:mvvm="using:Prism.Windows.Mvvm"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid Margin="{StaticResource MediumLeftTopRightBottomMargin}">
<TextBlock>this is the Sales page</TextBlock>
<TextBlock Text="{Binding Test}"></TextBlock>
</Grid>
</mvvm:SessionStateAwarePage>
但是 Prism 没有正确注入视图模型。取消这一点,Prism 框架正在注入 ShellViewModel,如下面的错误所示:
错误:BindingExpression 路径错误:在“Project.Universal.ViewModels.ShellViewModel”上找不到“Test”属性。 BindingExpression: Path='Test' DataItem='Project.Universal.ViewModels.ShellViewModel';目标元素是'Windows.UI.Xaml.Controls.TextBlock'(名称='null');目标属性是“文本”(类型“字符串”)
对于组织,我想将此模式用于文件夹:
Views/Context/ViewPage.xaml for views
ViewModels/Context/ViewModel.cs for viewModels
我正在使用带有 Prism 6.3 框架的 Windows Template Studio 中的模板。 对不起我的英语。
【问题讨论】:
-
嗨,我猜目录不是问题,但是您的命名空间...您可以尝试使用...ViewModels 和...Views 吗?否则您需要修改扫描类的方式。但我不知道该怎么做......
-
哦,是的,我改变了扫描课程的方式。我会发布我的解决方案,谢谢。
标签: mvvm uwp prism windows-10-universal prism-6