带棱镜的 AutoWirePartialView 不起作用或使用不当?

2024-02-20

我正在尝试使用棱镜7.1AutoWirePartialView绑定一个PartialView到它的 viewModel。但是,绑定不起作用,或者至少将 viewModel 设置为PartialView似乎不起作用,它仍然具有页面的 BindingContext 作为 BindingContext。

有我的页面 :

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"          
             x:Class="Project.Core.Views.NotConnectedViews.ForecastDemoPage"
             xmlns:carouselForecast="clr-namespace:Project.Core.Views.MainViews"
             xmlns:prism="clr-namespace:Prism.Mvvm;assembly=Prism.Forms"
             x:Name="ForecastDemo"
             BackgroundColor="{StaticResource PrimaryColorOne}" ControlTemplate="{StaticResource MainAppTemplate}">

    <ContentPage.ToolbarItems>
        <ToolbarItem Name="SearchForecast" Command="{Binding ShowSearchForecastDemoCommand}" Order="Primary" Icon="ic_search_white_24dp.png" Priority="0" />
    </ContentPage.ToolbarItems>

    <ContentView x:Name="ContentViewForecast"  ControlTemplate="{StaticResource ForecastTownControlTemplate}">
        <carouselForecast:ForecastPartialViewCarousel prism:ViewModelLocator.AutowirePartialView="{x:Reference ForecastDemo}"></carouselForecast:ForecastPartialViewCarousel>
    </ContentView>

</ContentPage>

绑定:找不到“DayWeatherForecasts”属性 'Project.Core.ViewModels.ForecastDemoPageViewModel',目标属性: 'Project.Core.Views.MainViews.ForecastPartialViewCarousel.ItemsSource'

正如你所看到的,我使用部分视图作为ContentPresenter for a ContentView使用一个ControlTemplate.

这是我的 PartialView :

<carousel:CarouselViewControl x:Name="carouselView" 
                              Position="{Binding CarouselPosition}" 
                              PositionSelectedCommand="{Binding PositionChanged}" 
                              Orientation="Horizontal" AnimateTransition="True" IsSwipeEnabled="False" 
                              ItemsSource="{Binding DayWeatherForecasts}" InterPageSpacing="10"
                              xmlns="http://xamarin.com/schemas/2014/forms" 
                              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                              xmlns:carousel="clr-namespace:CarouselView.FormsPlugin.Abstractions;assembly=CarouselView.FormsPlugin.Abstractions"
                              x:Class="Project.Core.Views.MainViews.ForecastPartialViewCarousel">
    <!-- Item template is defined here, removed for readability -->
</carousel:CarouselViewControl>

这是我的 PartialView ViewModel :

namespace Project.Core.ViewModels
{
    public class ForecastPartialViewCarouselViewModel : ViewModelBase
    {

        public ForecastPartialViewCarouselViewModel(IForecastService forecastService,
            INavigationService navigationService) : base(navigationService)
        {
            InitStubForecasts();
        }


        private ObservableCollection<DayWeatherForecast> _dayWeatherForecasts;

        public ObservableCollection<DayWeatherForecast> DayWeatherForecasts
        {
            get => _dayWeatherForecasts;
            set => SetProperty(ref _dayWeatherForecasts, value);
        }
    }
}

当然DayWeatherForecasts设置了一些存根值。为了便于阅读,我简化了 viewModel。

我没有使用 prism AutoWiring viewModel,因此在 app.xaml.cs 中:

containerRegistry.RegisterForNavigation<ForecastDemoPage, ForecastDemoPageViewModel>();

问题: 难道我的PartialViewModel位于 ViewModels 文件夹中,并且我想要绑定到此 ViewModel 的 Partialview 位于子文件夹下MainViews?我应该创建一个MainViewsViewModel文件夹并将我的 viewModel 放在那里?

编辑:我尝试了这个解决方案,但正如我所料,它什么也没做。

如果没有,那么我不知道为什么它不起作用......

谢谢 !


好吧,我终于发现它不够把这个放到我的PartialView

prism:ViewModelLocator.AutowirePartialView="{x:Reference ForecastDemo}

当我在子文件夹中组织视图时,棱镜无法单独注册我的视图ViewModel and my PartialView.

所以我需要的是手动注册ViewModelPartialView using ViewModelLocationProvider

protected override void RegisterTypes(IContainerRegistry containerRegistry) 
{ 
   ViewModelLocationProvider.Register<ForecastPartialViewCarousel,
   ForecastPartialViewCarouselViewModel>(); 
}

这不仅是名称的问题,也是命名空间的问题。如果我想要PartialView拥有正确的ViewModel设置不手动注册它,我应该把我的PartialView in the Views根文件夹和相应的ViewModel in the 视图模型根文件夹(具有命名约定)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带棱镜的 AutoWirePartialView 不起作用或使用不当? 的相关文章

随机推荐

  • 如何在javascript中找到多元回归方程

    我搜索了堆栈溢出 但没有找到任何与我的问题真正相同的问题 因为没有一个问题真正具有多个自变量 基本上我有一组数据点 我希望能够找到这些数据点的回归方程 到目前为止 我的代码如下所示 w x z 是自变量 y 是因变量 var dataPoi
  • 将 cocos2d 视图添加到 UIView

    我已将 cocos2d 2 0 集成到现有的 iOS 项目中 并希望能够创建一个视图并将其作为子视图添加到现有视图中 cocos2d 设置代码应该放在哪里以及 cocos2d 视图如何在 UIView 中可见 我已关注雷 文德利希教程 ht
  • Excel 工作簿输入时出现奇怪的错误

    对于当前代码 String currentPath Directory GetCurrentDirectory OpenFileDialog op new OpenFileDialog op InitialDirectory current
  • C# 错误提供程序不适用于组框和选项卡控件中的文本框

    我正在尝试使用错误提供程序来实现 以在继续执行之前验证我的文本框不为空 错误提供程序适用于主窗体上的文本框 但拒绝适用于组框或选项卡控件中的任何文本框或组合框 它不检查文本框 不显示错误或等待用户为正在检查的控件输入文本 选择项目 当然 如
  • 为什么双击单元格时下面的代码不会执行?

    下面的代码较早运行 但在双击单元格时不会执行 Private Sub Worksheet DoubleClick ByVal Target As range Cancel As Boolean If Target Font Bold Fal
  • 如何在 Android 中显示希腊字符?

    如何在 Android 中显示希腊字符 Android 具有完整的 Unicode 支持 显示希腊字符应该非常容易 在 strings xml 文件中 您可以使用希腊字符 这些字符将正确显示 当然 您需要以 UTF 8 格式保存文件
  • 名称 php 的表单验证,包括撇号、空格、连字符和句点

    我很难将正确的表达式组合在一起 因此它会拒绝除字母 句点 撇号 空格和连字符之外的所有内容 到目前为止 这适用于除撇号之外的所有内容 我尝试使用单 和双 来转义撇号 但无济于事 if preg match a zA Z POST name
  • 计算熊猫奇数比的更好方法

    我有一个数据框 counts1 如下所示 Factor w statin wo statin AgeGroups Cancer 0 5 No 108 6575 Yes 0 223 11 15 No 5 3669 Yes 1 143 16 2
  • 在活动映射 xml 中膨胀类片段时出错

    这个项目以前曾经运行过 运行应用程序时 我不断收到 InflateException 04 01 12 16 36 102 14895 14895 com example ali googleandroid E AndroidRuntime
  • 单击鼠标添加图像? Java小程序

    当鼠标单击时 如何在鼠标坐标上添加图像 我看过这个 将鼠标单击时的图像添加到 JPanel https stackoverflow com questions 19769061 adding images on mouse click to
  • 之间的区别:在 Intellij IDEA 中构建和制作

    对于Intellij IDEA中的JAVA EE项目 有什么区别 重建项目并创建项目 在菜单 构建 中 谢谢 您可以参考https www jetbrains com help idea 2016 2 compilation types h
  • MySql - Sequelize - 无法添加外键约束

    我正在尝试使用 Nodejs Sequelize 创建数据库 被调用的命令是 CREATE TABLE IF NOT EXISTS wheel id INTEGER NOT NULL auto increment createdAt DAT
  • Silverlight 绑定到布尔属性值的逆

    我想将控件可见性绑定到布尔属性值的倒数 我有一个属性 CanDownload 如果它是 true 那么我想隐藏文本框 反之亦然 我怎样才能实现这个目标 Thanks 被问到这样的问题so经常和答案so类似我认为是时候对所有 好吧可能是 大多
  • 根据两个条件对多个表进行排序的宏

    我徒劳地尝试让下面的宏正确运行 最终目标是一个宏 它将根据两个条件对多个表 在单个工作表上 进行排序 并且也适用于任何活动的工作表 我可以使用精确的表引用创建一个宏 但寻求更灵活的方法以避免每个工作表都有一个宏 我的大部分代码来自 Doug
  • 如何使用 VBA 将 & 符号从 Excel 文件写入 XML 文件?

    首先 对于 VBA 来说 我是一个完全的新手 但不幸的是我被抛弃了这段代码 我必须处理它 该应用程序的作用是复制 Excel xlsm 文件中的信息并将其粘贴到 XML 文件中以供进一步处理 问题是 一切都进行得很顺利 直到我在 Excel
  • 关于 Angular 中的位置更改

    有没有办法检测 AngularJS 中的全局位置变化 而不仅仅是单个控制器 我的目标是检测每个位置变化 或者有什么有效的方法来观察 window location href 的变化 routeChangeSuccess 据我了解仅适用于单个
  • ByteBuffer.wrap(byte[]) 会导致长时间运行的应用程序内存泄漏吗?

    我试图在网上搜索 但没有找到答案 基于java doc http docs oracle com javase 7 docs api java nio ByteBuffer html wrap byte 5B 5D ByteBuffer w
  • HasResolution 类型类

    我刚刚查了一下HasResolution 类型类 https hackage haskell org package base 4 10 1 0 docs Data Fixed html t HasResolution它有一个单一的方法 r
  • 为什么 .NET 中的多维数组比普通数组慢?

    Edit 我向大家道歉 当我实际上想说 多维数组 时 我使用了术语 锯齿状数组 如下面的示例所示 对于使用了错误的名字 我深表歉意 我实际上发现锯齿状数组比多维数组更快 我已经添加了锯齿状阵列的测量值 I was trying to use
  • 带棱镜的 AutoWirePartialView 不起作用或使用不当?

    我正在尝试使用棱镜7 1AutoWirePartialView绑定一个PartialView到它的 viewModel 但是 绑定不起作用 或者至少将 viewModel 设置为PartialView似乎不起作用 它仍然具有页面的 Bind