【问题标题】:Constructor with parameters for XAML elements in Xamarin Forms带有 Xamarin 表单中 XAML 元素参数的构造函数
【发布时间】:2022-09-23 16:23:06
【问题描述】:

是否可以使用依赖注入服务创建具有参数化构造函数的 XAML 元素?还是有其他方法可以传递依赖关系?我想有一些依赖服务的行为。我以为DependencyResolver.ResolveUsing将解决我的问题,但这种方法只允许解析特殊类型的对象,如渲染器或效果。我可以绑定到 viewmodel 属性,但这会产生大的 xaml 而不仅仅是简单的<SomeBehavior/>

    标签: xaml xamarin xamarin.forms


    【解决方案1】:

    Prism(应用程序继承自PrismApplication)中,非常简单

    假设你在某个地方有这些

    public interface IService
    {
        void Log(string msg);
    }
    
    public class ConcreteService : IService
    {
        public void Log(string msg)
        {
            Console.WriteLine(msg);
        }
    }
    

    步骤1。将服务与实现联系起来

    protected override void RegisterTypes(IContainerRegistry containerRegistry)
    {
        containerRegistry.RegisterSingleton<IService, ConcreteService>();
        // ..
    }
    

    第2步。把它放在视图的ctor中

    public partial class MainPage
    {
        public MainPage(IService service)
        {
            InitializeComponent();
            service.Log("After InitializeComponent..");
        }
    }
    

    【讨论】:

    • 但它不允许为 XAML 元素设置依赖项(例如 Behavior)。我对吗?
    【解决方案2】:

    恐怕不支持为 XAML 元素设置依赖项。

    您可以查看有关XAML 的Microsoft 文档。如果您有其他问题,请随时与我们联系

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 2019-12-17
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多