小编Ale*_*x J的帖子

在MVVM中,每个ViewModel是否只耦合到一个Model?

在MVVM实现中,每个只ViewModel耦合一个Model吗?

我试图在项目中实现MVVM模式,但我发现有时View可能需要来自多个的信息Models.

例如,对于一个UserProfileView,其UserProfileViewModel可能需要从信息UserAccountModel,UserProfileSettingsModel,UserPostsDataModel等.

但是,在我读到的关于MVVM的大多数文章中,ViewModel仅通过依赖注入包含一个模型.因此构造函数只接受一个Model.

ViewModel当必须从多个信息中获取信息时,它将如何工作Models?或者这种情况会发生在MVVM中吗?

PS:我没有使用Prism或Unity Framework.我正在尝试将类似的模式实现到我正在使用的不使用Prism或Unity的项目中.这就是为什么我需要准确理解其中一些是如何工作的.

c# design-patterns mvvm

36
推荐指数
2
解决办法
2万
查看次数

如何解开保证金?

缩小CSS中的利润率:http://www.w3.org/TR/CSS21/box.html#collapsing-margins

我理解该功能目的,但我正在尝试做布局,我无法弄清楚如何关闭它.

CSS教程中通常解释的方法是:

  1. 添加边框
  2. 添加填充

当您使用背景图像和固定填充处理像素完美布局时,所有这些都会产生明显的副作用.

有没有办法简单地禁用折叠而不必将额外的像素推入布局?我必须在视觉上影响文档以改变这样的行为,这对我没有任何意义.

css margin collapse

35
推荐指数
5
解决办法
2万
查看次数

空值是否可以节省存储空间?

可能重复:
数据库中空值使用的空间

什么在存储空间方面更有效?

  • nullable int列满空.
  • int列充满零.

我知道一个可空列可以占用1位额外的信息来存储它的空状态,但是执行空值会保存数据库,为一个空的int分配32位吗?

(null语义和null的含义对于这个问题并不重要)

database sql-server null

13
推荐指数
2
解决办法
9059
查看次数

更改关联时是否必须手动设置外键属性?

我正在使用Database First和DbContext从Linq-to-SQL迁移到Entity Framework(4.4).我想知道以下行为是否正常:

using (var e = new AgendaEntities()) {
    var store = e.Stores.First();
    var office = e.Offices.Create();
    office.Store = store; // Set association
    Console.WriteLine(office.StoreID); // shows Guid.Empty, expected store.ID!
}
Run Code Online (Sandbox Code Playgroud)

在L2S中,将Store关联设置为实体也会更新StoreID密钥.在EF中,这似乎并没有发生.这与实体是新的还是从上下文加载无关.

当我SaveChanges,它正确保存并StoreID更新以匹配office.ID,但为什么这只发生在保存后?

是否有我遗漏的东西,或者我现在应该手动保持外键同步?


解决方案编辑: 这称为属性修正,过去由生成的代理自动完成.但是,DbContext现在不再是这种情况了.根据这个Connect问题,这是设计的.

您好,DbContext模板实际上不会生成将用作更改跟踪代理的类 - 只是延迟加载代理(不执行修复).我们做出这个决定是因为更改跟踪代理很复杂,并且有许多细微差别,这对开发人员来说可能非常混乱.如果要在SaveChanges之前进行修复,可以调用myContext.ChangeTracker.DetectChanges.~EF团队

另一种方法是调用DbContext.Entry(entity),它将同步实体.本文描述了这一点:"同步FK和导航属性之间的更改"下的关系和导航属性

entity-framework entity-framework-4

9
推荐指数
1
解决办法
4591
查看次数

WPF中的双向百分比格式化绑定

我有这个文本框:

<TextBox Text="{Binding Path=TaxFactor, StringFormat=P}" />
Run Code Online (Sandbox Code Playgroud)

它正确显示0.055%,但它无法返回.当我输入百分比时,由于符号百分比而失败.如果我尝试只编写一个数字5,我会500%改为.我必须写0.05它才能工作.

我是否必须编写自定义转换器以获得我的百分比?如果是这样,我如何绕过特定于语言环境的百分比格式?

.net data-binding wpf

8
推荐指数
2
解决办法
7947
查看次数

使用'svn mv'将bash中目录中的每个文件大写

我需要在subversion工作副本中更改一组文件的大小写,如下所示:

svn mv test.txt Test.txt
svn mv test2.txt Test2.txt
svn mv testn.txt Testn.txt
...
svn commit -m "caps"

如何自动完成此过程?标准的linux安装工具可用.

svn shell rename file batch-file

6
推荐指数
1
解决办法
2379
查看次数

我应该在组件中混合技术吗?

我有一个中型项目,实现了大约20个左右的不同概念.一开始,我选择基于概念层组织我的程序集,如下所示:

MyProject.Domain.dll (References System.Data.Linq, etc.)
  \ConceptA\
  \ConceptB\
  \ConceptC\
  \...\

MyProject.Presentation.dll
  \ConceptA\
  \ConceptB\
  \ConceptC\
  \...\

MyProject.WinForms.dll (References System.Windows.Forms, etc.)
  \ConceptA\
  \ConceptB\
  \ConceptC\
  \...\

MyProject.App.exe (References all the above)
Run Code Online (Sandbox Code Playgroud)

我最近读了一本DDD书,我应该根据它所代表的领域概念而不是技术层对我的程序集进行分组,如下所示:

MyProject.ConceptA.dll (References System.Data.Linq, System.Windows.Forms, etc.)
  \Domain\
  \Presentation\
  \WinForms\

MyProject.ConceptB.dll
  \Domain\
  \Presentation\
  \WinForms\

MyProject.ConceptC.dll
  \Domain\
  \Presentation\
  \WinForms\

MyProject.App.exe (References all the above)
Run Code Online (Sandbox Code Playgroud)

从长远来看,我没有足够的经验来判断这两种方法.我希望在复杂性和灵活性之间取得最佳平衡.我有一些担忧让我感到矛盾:

  • 按概念分组可以更容易地找到我的代码,因为它只在一个地方.
  • 按技术分组可确保我不会MessageBox.Show从我的域层调用.
  • 我最终会转出数据访问和演示技术.
  • 在一天结束时,主应用程序将引用所有程序集.
  • 按概念分组时,测试将在何处进行?我不是必须将它们放在单独的程序集中,以便它们不随附程序吗?

根据您的经验,哪种方法最好?

.net assemblies domain-driven-design project-organization

5
推荐指数
1
解决办法
131
查看次数

修改集合时运行代码(添加或删除项目)

我有一个包含对象列表的类.修改列表时,在类中运行某些代码的最佳方法是什么?

class MyManagerClass
{
    ArrayList list = new ArrayList(); // will likely be a different collection class
    private OnItemAddedToList(object o)
    {
        // how to call this?
    }

    private OnItemRemovedFromList(object o)
    {
        // how to call this?  
    }
}
Run Code Online (Sandbox Code Playgroud)

.net collections

2
推荐指数
1
解决办法
755
查看次数

在设置属性时更换事件的最优雅方法是什么?

做基于组件的开发,我发现自己经常这样做:

public class SomeClass
{
    SomeOtherClass foo;

    public SomeOtherClass Foo
    {
        get { return foo; }
        set {
            if (value != foo) {
                if (value != null) {
                    // subscribe to some events
                    value.SomeEvent += foo_SomeEvent;
                }

                if (foo != null) {
                    // unsubscribe from subscribed events
                    foo.SomeEvent -= foo_SomeEvent;
                }

                foo = value;
            }
        }
    }

    void foo_SomeEvent(object sender, EventArgs e)
    {
        // do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有更优雅的方式来做这个事件"换出"?

(当然,如果foo是不可变的话,可以避免整个问题,但是我不会得到任何视觉设计师的支持.)

c# events components event-handling

1
推荐指数
1
解决办法
175
查看次数

使用公共接口和内部类型参数的泛型

我有以下情况:

// A public interface of some kind   
public interface IMyInterface {   
    int Something { get; set; }   
}   

// An internal class that implements the public interface.   
// Despite the internal/public mismatch, this works.   
internal class MyInternalConcrete : IMyInterface {   
    public int Something { get; set; }   
}   

// A generic class with an interface-restricted type parameter.
// Note that the constraint on T uses the *public* interface.
// The instance is *never* exposed as a public, or even …
Run Code Online (Sandbox Code Playgroud)

.net c# generics interface

0
推荐指数
2
解决办法
3383
查看次数