请帮忙 - 我迷路了!
我正在编写一个小型桌面应用程序,它有一些控件和一些屏幕.这应该稍后与一个小网站集成,也有一些屏幕.我们的想法是让用户编辑视频并选择图像,然后与朋友分享他们的结果.
桌面应用程序使用的是C#WPF,即网站 - ASP.Net MVC.
我读到使用MVVM可以更轻松地将应用程序增加到几个屏幕.所以我开始搜索并发现了Caliburn.Micro和MVVM.Light.我已经下载了一些教程,但正如我准备深入研究材料一样,我在SO上找到了.那里还有Prism,MEF,Unity,ReactiveUI - 这太过分了!
我学习新东西很糟糕 - 学习WPF和ASP.Net MVC花了我很多年的时间.我不想研究很多新材料,只是为了稍后发现它不相关.而且我没有一位建筑师来指导我.
所以我的问题是:你能否对这些框架和技术进行透视,并建议我应该把重点放在研究和使用上(特别是后来用于Windows 8的内容)?
我正在使用Caliburn.Micro开发Windows Phone 8项目,我想在同一个按钮上附加2个单独的事件.
这样做的语法是什么?
我已经尝试了下面的一些组合,但继续从Caliburn得到错误说"跳对不是现有路线的一部分"
cm:Message.Attach="[Event Tap] = [Action SelectItem], [Event Hold] = [Action OpenItemMenu]"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经能够使用短语法处理1个事件,使用long语法处理1个事件但是希望能够以相同的方式使用它们.
我一直在使用Caliburn Micro作为我们的MVVM框架在新的Silverlight应用程序上做一些原型工作.团队一直很满意.为了解决对服务的限制请求的一些问题,建议我查看ReactiveUI的ReactiveCollections及其INotifyPropertyChanged的实现.
有没有人有任何使用这两者的经验?因为它们都是主要的MVVM框架,所以有很多重叠,所以我想知道它是否可能比尝试使它们一起工作更麻烦.
我们真正喜欢Caliburn Micro的一些事情是:
ReactiveUI的东西吸引了我们(至少最初).
我几乎没有机会玩ReactiveUI,但是当我看着它并看到两者之间的重叠时,我想知道谁可能试图将两者都用于一个项目.我无法通过谷歌找到任何东西(这可能是我的错).
我很想知道你是否尝试过这个; 你有什么问题?您使用了每个框架的哪些部分?为什么?是否有任何好的例子或博客文章一起使用它们?
干杯,
史蒂夫
我正在使用Caliburn.Micro和Autofac开发应用程序.
在我的组合根目录中,我现在面临着Autofac的问题:我必须将全局使用的IEventAggregator注入我的FirstViewModel,以及第二个IEventAggregator,它必须仅由FirstViewModel及其子项使用.
我的想法是将第二个注入Owned<IEA>
,并且它起作用,容器提供了IEA的不同实例.
public FirstViewModel(
IEventAggregator globalEA,
IEventAggregator localEA,
Func<IEventAggregator, SecondViewModel> secVMFactory) {}
Run Code Online (Sandbox Code Playgroud)
当我必须向SecondViewModel提供事件聚合器时,问题就出现了.
要创建SecondViewModel,我使用工厂方法Func<IEA, SecondVM>
.SecondViewModel的构造函数如下:
public SecondViewModel(IEventAggregator globalEA, IEventAggregator localEA) {}
我希望容器注入第一个作为注册的容器,第二个将是IEA参数Func<IEA, SecVM>
.
这是我在容器中注册的功能:
builder.Register<Func<IEventAggregator, SecondViewModel>>(
c =>
(ea) =>
{
return new SecondViewModel(
c.Resolve<IEventAggregator>(),
ea);
}
);
Run Code Online (Sandbox Code Playgroud)
但当它被FirstViewModel
我调用时,我得到以下错误:
Autofac.dll中出现"System.ObjectDisposedException"类型的异常,但未在用户代码中处理
附加信息:此解析操作已结束.使用lambdas注册组件时,无法存储lambda的IComponentContext'c'参数.相反,要么从'c'再次解析IComponentContext,要么解析基于Func <>的工厂以从中创建后续组件.
我无法理解问题出在哪里,你能帮帮我吗,我错过了什么?
谢谢.
我将ViewModels绑定到ContentControls并让Caliburn负责创建和绑定视图.但是,我想根据我绑定的ContentControl自定义Caliburns ViewModel-> View约定.
例如,一个常规的ContentControl,我希望常规View绑定(SomethingViewModel - > SomethingView).但对于某个ContentControl,我希望Caliburn获取一个名为SomethingViewSpecial的View.那可能吗?
我刚开始使用Caliburn Micro.我想要一个带有字符串列表的组合框,当用户选择一个项目时,我希望有一个名为的notify方法.应该很简单吧?我很不耐烦,5分钟的谷歌搜索还没有解决它,所以Stackers要救!
注意:我赞成一个答案,告诉我如何将它放入视图模型中.避免复杂的XAML是MVVM框架的全部要点,恕我直言.
当使用FormsApplication
基础类和使用Caliburn.Micro的全新Xamarin.Forms应用程序时,我最终在屏幕顶部显示一个空的导航栏.我认为它是由Caliburn.Micro以某种方式创建的,因为开箱即用的Xamarin.Forms应用程序没有这个.
有没有什么方法可以使用Caliburn.Micro与Xamarin.Forms没有这个导航栏?
我ViewModel1
和View1相关联.我ViewModel2
使用IWindowManager
object 从(另一个viewmodel)启动对话框窗口.ViewModel2
类中的代码:
windowManager.ShowDialog(new ViewModel());
Run Code Online (Sandbox Code Playgroud)
所以,我有Viewop窗口和View1用户控件.
我的答案是下一个 - 我可以使用红色关闭按钮关闭该对话框窗口,但是如何使用我的特定按钮(包含在View1
用户控件中)关闭它,类似"取消"按钮和关闭命令(Command={Binding CancelCommand}
),CancelCommand
当然包含在ViewModel1
课堂上.
MahApps Merry Men的简单问题.我已经使用Caliburn.Micro使用你的伟大的地铁风格的控件实现了MVVM的应用程序.新的消息对话框看起来很棒,但目前还没有明确的方法来启动这些对话框而不用编写自己的包装器(我不反对).但是,这已经完成或者是否有我遗漏的东西,以便我可以从视图模型中调用消息框而不用大惊小怪?
谢谢你的时间.
我一直在使用Caliburn Micro MVVM框架,并且在防护方法方面遇到了一些问题.
我有一个视图模型:
public class MyViewModel : PropertyChangedBase, IMyViewModel
Run Code Online (Sandbox Code Playgroud)
财产:
public DateTime? Date
{
get{return this.date; }
set
{
this.date = value;
this.NotifyOfPropertyChange(() => Date);
}
}
Run Code Online (Sandbox Code Playgroud)
另外,我的视图模型中有一个方法,带有一个保护方法
public void Calculate()
{
// ..some code..
}
public bool CanCalculate()
{
return this.Date.HasValue;
}
Run Code Online (Sandbox Code Playgroud)
我的视图中有一个按钮:
我遇到的问题是CanCalculate方法在加载时执行,但是当我在文本字段中输入值时,它不会重新评估CanCalculate方法.我在设置数据绑定视图模型属性时触发属性更改事件,那么可能是什么问题?
caliburn.micro ×10
c# ×4
mvvm ×3
wpf ×3
silverlight ×2
.net ×1
autofac ×1
conventions ×1
dialog ×1
mef ×1
mvvm-light ×1
prism ×1
reactiveui ×1
window ×1
xaml ×1