C# 自动连线ViewModel(Prism)的附加代码完成
我正在做一个使用Prism作为客户端软件的项目。我有一个C# 自动连线ViewModel(Prism)的附加代码完成,c#,xaml,prism,rider,C#,Xaml,Prism,Rider,我正在做一个使用Prism作为客户端软件的项目。我有一个UserControlXAML文件,看起来像这样: <UserControl x:Class="UserModule.Frontend.UserListView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://sche
UserControl
XAML文件,看起来像这样:
<UserControl x:Class="UserModule.Frontend.UserListView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:prism="http://prismlibrary.com/"
prism:ViewModelLocator.AutoWireViewModel="True"
mc:Ignorable="d"
d:DesignHeight="450" d:DesignWidth="800">
<Grid>
<ListView ItemsSource="{Binding Users}"/>
</Grid>
</UserControl>
实际的XAML有点长,但我的问题是:
Rider在列表视图的ItemsSource
属性的绑定处向我显示一条警告。我有一个ViewModel,Prism注入正确,我可以看到列表已经填充。但是,在设计时,如果我不亲自检查,我就看不出该属性是否存在。同时,我在ViewModel类中得到一个警告,用户的公共getter
可能会被删除
是否有一种方法可以完成代码以识别带Prism的自动连线ViewModel?您需要为视图定义
d:DataContext
。如果我定义了DataContext
属性,那么就投票支持…自动连接不是多余的吗?是和否-是,因为你提到了类型,尽管它是自动解析的,而不是,因为通过指定d:DataContext
你没有设置DataContext
(注意d:
)好的,为了完成解决方案:我添加了一个名为IGroupListViewModel
的接口,我的视图模型类实现了该接口。我还添加了一个名为GroupListViewModelStub
的类,该类实现该接口时没有任何必要的logik。XAML文件通过d:DataContext
引用存根,但prism在运行时将实际视图模型传递给它。您可以看看这个答案-使用DesignTimeFactory
可以跳过附加接口。同时,我发现在d:DataContext
中指定接口就足够了,这意味着我只需要创建接口和具体实现。