我一直在阅读来自MSDN等各种来源的MVVM模式:
http://msdn.microsoft.com/en-us/magazine/dd419663.aspx
在那篇文章中它说:与MVP中的Presenter不同,ViewModel不需要对视图的引用.
如果View(XAML)假定它的DataContext是ViewModel,那么代码中的位置是以下行:
view.DataContext = viewModel;
Run Code Online (Sandbox Code Playgroud)
ViewModel对视图一无所知,因此无法设置datacontext.如果我给ViewModel提供参考,我是否打破了MVVM模式?我的另一个选择是拥有某种类型的Builder或额外的Presenter,其唯一的工作就是连接整个事物(等待View的加载事件,设置DataContext).
我知道不同的视图可以共享相同的DataContext(例如,仅为主窗口设置DataContext,而其他人将看到它),但在许多情况下,这根本不可能,甚至不可行.
这是我在设计新应用时遇到的很多问题.我将用一个示例问题来解释这一点.
我正在写简单的游戏,所以我想要一个玩家列表.我的选择很少......
Run Code Online (Sandbox Code Playgroud)private static ArrayList<Player> players = new ArrayList<Integer>(); public Player getPlayer(int i){ return players.get(i); }
但这是一个全球化的国家
Run Code Online (Sandbox Code Playgroud)class PlayerList{ private PlayerList instance; private PlayerList(){...} public PlayerList getInstance() { if(instance==null){ ... } return instance; } }
但这很糟糕,因为它是一个单身人士
Run Code Online (Sandbox Code Playgroud)class Game { private PlayerList playerList; public Game(PlayerList list) { this.list = list; } public PlayerList getPlayerList() { return playerList; } }
这似乎很好,但事实并非如此.
如果Game之外的任何对象需要查看PlayerList(这是通常的情况),
我必须使用上述方法之一来使Game类全局可用.所以我只是为问题添加了另一层.我实际上没有解决任何问题.
什么是最佳解决方案?(目前我使用Singleton方法)
UML是一个旨在用软件建模的标准,它将用OO语言编写,并与Java携手并进.它是否可能用于模拟软件的功能编程范式?鉴于嵌入的视觉元素,哪些图表将变得有用?
是否有针对函数式编程的建模语言,更具体地说是Haskell?你会推荐哪些工具来组合图表?
我正在寻找的是代码中发生的最直观,最轻的代表.易于遵循的图表,视觉模型不一定针对其他程序员.我很快就会在Haskell开发一款游戏,但由于这个项目是我的毕业结论工作,我需要介绍一下拟议解决方案的某种形式化.我想知道是否有相当于UML + Java标准,但对于Haskell.我应该坚持使用故事板,书面描述,非正式化的图表(一些浅的流程图图像),非正式的用例描述吗?
请注意,提问者最初想要一个视觉元素,现在我们已经有三年了,我们正在寻找更多/更好的工具.原始答案都没有真正解决"视觉隐喻设计工具"的概念,所以......这就是新的赏金所要提供的.
modeling haskell programming-languages functional-programming
对于我的Web应用程序,我需要在父窗口关闭时关闭子窗口."关闭"是指浏览器窗口实际上已关闭,而不仅仅是导航到新页面.
我已经看到" 如果父窗口关闭,我如何关闭子窗口? "问题已经存在,但是我的问题是一个扩展.该问题的答案解决了在父级的任何卸载事件上关闭子窗口的问题.然而卸载!=关闭(IMO); 只需单击链接即可触发卸载事件.
由于JS中没有"onclose"事件,我认为最好的方法是在子节点上父节点的卸载事件setTimeout上查看它的父节点是否仍然存在,如果不存在则关闭:
var w = window.open("", "Logger", "height=480,width=640,resizeable,scrollbars=yes");
if (w) {
JSEvents.on(window,'unload',function(){
if (w && !w.closed) {
w.setTimeout(function(){
//IE this==w.opener
if (!w.opener || w.opener.closed) {
w.close();
}
},500);
}
});
}
Run Code Online (Sandbox Code Playgroud)
但是,我相信我已经非常确切地证明,在IE(7)中,您无法在父窗口或子窗口上的卸载事件期间使用setTimeout.在上面的例子this == w.opener里面有setTimeout匿名函数.此测试从不产生警报:
JSEvents.on(window, 'unload', function(){
window.setTimeout(function(){alert('HERE');},500);
});
Run Code Online (Sandbox Code Playgroud)
alert没有的直线setTimeout会产生警报.
是否有一个技巧可以从我可以使用的父项中为子项设置setTimeout?
是否有另一种方法可以检测父母何时关闭我可以使用?
在FF中这样做要容易得多,所以我专注于让它在IE下工作.
我试图淡入一个隐藏的元素,然后使用mootools再次淡出它.
我不能只使用$('my_div').fade('toggle'),因为这假设元素始终可见,而我的div开始display:none.
是否有一种简单的方法可以将淡入/淡出与滑入/滑出或其他方式相结合以获得良好的效果?
我想在两种语言之间写一个翻译,经过互联网上的一些阅读后,我决定选择ANTLR.我必须从头学习它,但除了消除左递归的一些麻烦,一切都很好,直到现在.
然而,今天有些人告诉我查看Happy,一个基于Haskell的解析器生成器.我没有Haskell的知识,所以我可以使用一些建议,如果Happy确实比ANTLR好,并且值得学习它.
特别值得关注的是我的翻译需要支持宏替换,我不知道如何在ANTLR中做.也许在快乐中这更容易做到?
或者如果认为其他解析器生成器更好,我会很高兴听到它们.
如果您在现代应用程序中键入密码,它通常会显示一个漂亮的整洁黑色圆圈 - 更传统的应用程序将使用星号.这个角色是如何创造的?它是ascii值(如果是这样我找不到它)?如果没有,它是如何创建的?
干的家伙,我是中级RoR程序员的新手.但是,我不太擅长设置关系数据库,所以我需要一只手.
基本上我的应用程序是一个读书俱乐部.用户注册,用户基于书籍创建书籍俱乐部.其他用户加入此俱乐部并进行讨论(如论坛).
我写了一个关于模式的英文描述.
用户有很多俱乐部
俱乐部有一本书,有很多用户,有很多线程
书中有很多俱乐部,属于俱乐部
线程有很多回复,属于俱乐部
回复属于一个主题
我需要一些关于迁移的帮助,以及模型.
任何帮助都会很棒.
谢谢!
我们在WebLogic服务器上有许多Spring Web应用程序,并且很好奇WAR何时应该进入EAR以及它们何时应该作为WAR存在.有时,WAR需要访问常见的逻辑JAR,但我不明白为什么当这些JAR可以打包到WAR中时需要进入EAR.
根据我的理解,如果EAR中有多个WAR并且您需要修改其中一个WAR,则需要重新部署整个EAR以更新服务器.这将导致所有WAR反弹.但是,如果他们不在EAR中,我可以更新一个WAR,它将是唯一一个反弹的人.
将100个不同的WAR文件单独使用并使用打包的JAR和共享库(使用WebLogic)有什么问题?
感谢您的任何见解!
我有一个项目,我使用StructureMap进行依赖注入.该项目作为MVC项目编译良好,但在将所有内容移动到MVC2项目后,我现在收到以下错误:
Test.Web.Controllers.StructureMapControllerFactory.GetControllerInstance(System.Type)':找不到合适的方法来覆盖C:\ Test\Web\Controllers\StructureMapControllerFactory.cs 11 40 Test.Web
这是我的StructureMapControllerFactory:
using System;
using System.Web.Mvc;
using StructureMap;
namespace Test.Web.Controllers
{
public class StructureMapControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)**
{
IController result = null;
try
{
if (controllerType == null) return base.GetControllerInstance(controllerType);
result = ObjectFactory.GetInstance(controllerType) as Controller;
}
catch (StructureMapException)
{
System.Diagnostics.Debug.WriteLine(ObjectFactory.WhatDoIHave());
throw;
}
return result;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了一个与此问题半关联的帖子,但它没有提供任何关于如何解决我的问题的见解:MVC 2预览1 - 控制器中带参数的方法无法加载
显然我必须错过1.0-2.0级别的变化,但我不确定是什么改变了.任何帮助总是受到赞赏.