Tag: caliburn.micro

如何使用Caliburn.Micro将容器绑定到MVVM标准中的listview控件?

我正在使用Caliburn.Micro库编写MVVM (C#)和XAML程序。 我想知道如何将Listview控件与List , IEnumerable或ObservableCollection等容器绑定? 查看\ MainView.xaml 的ViewModels \ MainViewModel.cs namespace ListBox_CaliburnMicro { public class MainViewModel : Screen { // … public MainViewModel() { } public class FileItem { public string FileStatus { get; private set; } public string FileName { get; private set; } public string FileSize { get; private set; } public string […]

Caliburn.Micro – ShowDialog()如何关闭对话框?

编辑: 新信息,只是设法让记录器工作(我真的不知道cm有一个!)并且我在尝试使用TryClose()时给出了此消息。 TryClose requires a parent IConductor or a view with a Close method or IsOpen property 我已经被困在这几天了,研究已经变为零,我之前尝试过发布一个关于这个问题的问题,但是没有得到答案所以我认为我没有正确说出来。 我有一个视图和viewmodel ContentView / Model ,其中包含以下代码: ContentView : ContentViewModel : public void NewProject() { NewProjectViewModel viewModel = new NewProjectViewModel(_projectManager); _windowManager.ShowWindow(viewModel); //If the result is true, we have a new project, otherwise they cancelled the window. if (viewModel.Result) { […]

拦截Ninject实例激活?

我试图在WP7和Ninject上使用Caliburn Micro。 一切都很直接。 但是,一旦实例被Ninject激活,我就会被困在如何解决事件。 这是Caliburn Micro的SimpleContainer中的ActivateInstance方法,它是手机CM附带的IoC容器。 protected virtual object ActivateInstance(Type type, object[] args) { var instance = args.Length > 0 ? Activator.CreateInstance(type, args) : Activator.CreateInstance(type); Activated(instance); return instance; } 我在Ninject中注册我的类型,当它们被激活时,我需要激活Activated事件。 我看了拦截可能是要走的路,但我不认为动态代理和林福将在手机上工作。 为了澄清更多,我没有使用SimpleContainer,上面是显示SimpleContainer在激活实例时所做的事情。 我有一个NinjectBootstrapper和一个实现IPhoneContainer的NinjectContainer。 我无法弄清楚如何实现event Action Activated; 与Ninject。 更新: .OnActivation()看起来像票。 Kernel.Bind().To().InSingletonScope().OnActivation();

MVVM关闭文件的方式有可能取消出来

我正在使用Avalondock 2.x作为我的一个开源项目,如果你关闭它时文档很脏,你应该可以取消关闭。 我正在使用Caliburn Micro和Coroutine,只有我能够解决它的方法是使用CM附加到事件 事件arg有取消属性。 这个approuch的问题是它不是很MVVM友好,我已经创建了一个小帮手方法来Coroutinify这个像 public IEnumerable Coroutinify(IEnumerable results, System.Action cancelCallback) { return results.Select(r => { if (r is CancelResult) cancelCallback(); return r; }); } 用过像 public IEnumerable DocumentClosing(ScriptEditorViewModel document, DocumentClosingEventArgs e) { return Result.Coroutinify(HandleScriptClosing(document), () => e.Cancel = true); } 这有效,但它有点笨拙等,是否有更多的MVVM方式关闭Avalondock的文件取消能力? 编辑:源代码 https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellView.xaml#L29 https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellViewModel.cs#L110 https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Result/ResultFactory.cs#L49

Caliburn Micro Xamarin的数据绑定操作顺序

什么是Caliburn.Micro Xamarin Android(Mono.Android)中的数据绑定的“操作顺序”(OOP)? PS:解释/比较Caliburn Micro Standard / WPF,Caliburn Micro Android和Caliburn Micro iOS(即Caliburn.Micro Xamarin)中的绑定方式的教程将非常有用,并且是对Caliburn Micro Xamarin的一个很好的介绍。 对于常规的Caliburn.Micro,OOP for Binding是(如果我错了,请纠正我): 在ViewModel中声明Field 在字段集上:调用NotifyOfPropertyChange(..) 使用XAML属性x:Name将View绑定到ViewModel 我已经检查了示例项目Hello.Xamarin和HubBrowser ,我想我有点想法它是如何工作的,但看起来需要很多设置。 对于Caliburn.Micro Xamarin Android是绑定OOP有点像……? 扩展NotifyPropertyChanged方法。 不知道为什么……也许这对Android有用吗? 我们生成一个名为NotifyPropertyChangedExtensions的静态类 在ViewModel中声明字段(与标准CM相同) 在字段集上:调用NotifyOfPropertyChange(..) (与标准CM相同) 为所有View小部件提供唯一的id android:id 在视图(活动)创建上:以某种方式将View小部件绑定到ViewModel字段?

Caliburn.Micro DisplayRootViewFor抛出NullReferenceException

我的Bootstrapper中有以下代码: private SimpleContainer container; protected override void Configure() { container = new SimpleContainer(); container.Singleton(); container.PerRequest(); } protected override object GetInstance(Type service, string key) { return container.GetInstance(service, key); } protected override IEnumerable GetAllInstances(Type service) { return container.GetAllInstances(service); } protected override void BuildUp(object instance) { container.BuildUp(instance); } 在OnStartup方法中,我调用DisplayRooViewFor方法: protected override void OnStartup(object sender, StartupEventArgs e) { DisplayRootViewFor(); […]

应用程序MainWindow在WPF中为空(使用Caliburn Micro)

我正在开发一个WPF应用程序,我需要指向一个控件内的应用程序的主窗口。 我正在使用Caliburn Micro。 Application.Current.MainWindow为null 如何在Caliburn Micro中获得对MainWindow应用程序的引用?

将全局变量放在MVVM中的位置(Caliburn micro)

我正在将一个在WinForms中完成的程序重构为WPF,并且我使用Caliburn.Micro作为实现MVVM模式的框架。 在旧程序中,我使用StatisHelper类来允许不同的静态变量,如主题,语言,用户名或访问权限等。 我知道它可能不安全,因为这些变量是公开的,但我怀疑我的最终用户知道如何访问这些值… 无论如何,我想知道MVVM中保存全局值的最佳实践(具体来说,我使用的是Caliburn.Micro框架) ,可以访问所有视图模型。 谢谢你的回复。

Caliburn.Micro的保护条款出错

我正在尝试使用Caliburn.Micro实现这样的防护处理,但是当应用程序运行时我得到了一个无效的强制转换exception。 财产: public Account UserAccount { get { return account; } set { account = value; NotifyOfPropertyChange(() => UserAccount); NotifyOfPropertyChange(() => CanSaveAndNavigateToComposeView()); } } 方法: public void SaveAndNavigateToComposeView() { CommitAccountToStorage(); navigationService.UriFor().Navigate(); } 守卫: public bool CanSaveAndNavigateToComposeView() { return !(string.IsNullOrEmpty(UserAccount.DisplayName) || string.IsNullOrEmpty(UserAccount.Username) || string.IsNullOrEmpty(UserAccount.Password) || string.IsNullOrEmpty(UserAccount.ServerSymbol)); } 如果我取消对财产的通知道具更改,那么警卫就可以工作,但这意味着我的方法永远无法评估。

Caliburn.Micro在App.xaml的命名空间中没有“Bootstrapper”

编辑:似乎我终于让它工作了。 我问过我之前提到的那篇文章的作者,他说这是一个已知的问题。 他还给了mi一个解决方法(在post下方的评论中),所以我认为这个问题是封闭的。 但感谢大家花时间解决我的问题:) 我正在尝试使用Caliburn Micro框架学习MVVM,但我从一开始就遇到了问题。 我正在学习本教程,并在App.xaml中获得了这样的代码: 但是我收到了一个错误: 名称“Bootstrapper”在名称空间“clr-namespace:Caliburn”中不存在。 我从NuGet存储库获得了Caliburn Micro 1.5.2。 任何想法赞赏…… 我的引导程序: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Caliburn.Micro; namespace Caliburn { public class Bootstrapper : PhoneBootstrapper { PhoneContainer container; protected override void Configure() { container = new PhoneContainer(); container.RegisterPhoneServices(RootFrame); //container.PerRequest(); AddCustomConventions(); } static void AddCustomConventions() { //ellided } protected […]