gpt4 book ai didi

wpf - caliburn.micro 如何为 View 模型运行时加载和绑定(bind) View

转载 作者:行者123 更新时间:2023-12-03 10:20:30 25 4
gpt4 key购买 nike

我正在构建一个需要主题支持的应用程序。所以我想提供 View 文件夹运行时间。

public class AppBootstrapper : Bootstrapper<IShell>
{
CompositionContainer _container;

/// <summary>
/// By default, we are configure to use MEF
/// </summary>
protected override void Configure()
{
//view locator code get views from file and and binding it to viewmodel run time.
}
}

最佳答案

更好的调整是使用这种方式(在 Caliburn 中实现,但不是在 Micro 中实现)。 http://caliburnmicro.codeplex.com/discussions/265502

首先,您需要定义一个属性,用于存储用于发现 View 的相关数据:

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
public class ViewAttribute : Attribute
{
public object Context { get; set; }

public Type ViewType { get; private set; }

public ViewAttribute(Type viewType)
{
ViewType = viewType;
}
}

将其附加到您的 View 模型。
[View(typeof(MyView))]
public class MyViewModel : Screen

然后,您需要将 Bootstrap 中的 LocateTypeForModelType 更改为如下所示:
void Initialize()
{
var baseLocate = ViewLocator.LocateTypeForModelType;

ViewLocator.LocateTypeForModelType = (modelType, displayLocation, context) =>
{
var attribute = modelType.GetCustomAttributes(typeof(ViewAttribute), false).OfType<ViewAttribute>().Where(x => x.Context == context).FirstOrDefault();
return attribute != null ? attribute.ViewType : baseLocate(modelType, displayLocation, context);
};
}

关于wpf - caliburn.micro 如何为 View 模型运行时加载和绑定(bind) View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7717393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com