小编Ale*_*sev的帖子

什么是用户界面设计模式中的模型,如MVC,MVP,MVVM?

我已经看过许多使用模型 - 视图UI设计模式的教程和示例,并且它们都以非常不同的方式实现它们,尤其是模型部分.在一些示例中,Model是某些服务层中某些数据访问层(如存储库模式)中的数据(某些数据库的实际对象表示)...
如果有人告诉您他在他的应用程序中使用MV*模式,它会是什么告诉你应用程序设计?它是否在对象图中维护数据库的内存表示,并将其用作数据源或某些数据访问层来查询数据库...

您将选择什么作为面向数据的智能客户端应用程序的模型,其中主要包含带有表的标签页?

.net c# user-interface design-patterns

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

使用MVVM模式的UI设计

我正在尝试选择以MVVM方式实现此UI的最佳方法.我是WPF的新手(比如2个月),但我有很棒的WinForms经验. 在此输入图像描述

这里的ListBox就像一个TabControl(所以它将视图切换到右边),基本上包含表格中显示的项目类型.所有UI都是动态的(ListBox项,TabItems和Columns在运行时确定).该应用程序的目标是WPF和Silverlight.

ViewModel需要的类:

public abstract class ViewModel : INotifyPropertyChanged {}
public abstract class ContainerViewModel : ViewModel
{
    public IList<ViewModel> Workspaces {get;set;}
    public ViewModel ActiveWorkspace {get;set;}
}
public class ListViewModel<TItem> where TItem : class
{
    public IList<TItem> ItemList { get; set; }
    public TItem ActiveItem { get; set; }
    public IList<TItem> SelectedItems { get; set; }
}
public class TableViewModel<TItem> : ListViewModel<TItem> where TItem : class
{
    public Ilist<ColumnDescription> ColumnList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在的问题是如何将其连接到View.

我可以在这里看到两种基本方法:

  • 使用XAML:由于XAML缺乏泛型支持,我将失去强类型.
  • 没有XAML:我可以重用它 ListView<T> : …

c# silverlight wpf xaml mvvm

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

构造函数外部的C#对象构造

当涉及到设计类和它们之间的"通信"时,我总是试图以这样的方式设计它们,使得所有对象构造和组合都发生在对象构造函数中.我不喜欢从外部发生对象构造和组合的想法,就像其他对象设置属性和调用我的对象上的方法来初始化它一样.当多个对象尝试对您的对象执行此操作并且您永远不知道您的props\methods将以何种顺序执行时,这尤其会变得丑陋.

不幸的是,我常常对这种情况感到困惑,特别是现在随着依赖注入框架的日益普及,许多库和框架依赖于某种外部对象初始化,并且通常不仅需要对我们的对象进行构造函数注入,而且还要求属性注入.

我的问题是:

  1. 是否可以让对象依赖于某些方法,或者在它们上调用属性,之后他们可以认为它们被初始化了?

  2. 当你的对象是接收器时,它是某种模式,并且必须支持多个调用它的接口,这些调用的顺序是否重要?(比设置标志更好的东西,比如ThisWasDone,ThatWasCalled)

c# dependency-injection

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

从多个类中提取超类并从中派生出来

我想重构我认为应该从一个基类派生的多个类.

如何使用ReSharper 6正确完成此重构?我可以从其中一个类中提取超类,但下一步是什么?我是否必须手动从这个基类派生并在我想要派生的每个类中搜索相同的成员?

c# resharper refactoring

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

Silverlight打印抗锯齿

我正在尝试从Silverlight 4应用程序打印图像(QR码),但是打印时图像是防污的(我已经尝试了XPS文件打印机和硬件打印机)图像是blury,并且条形码阅读器无法读取.

来自印刷的XPS文件的图片http://img805.imageshack.us/img805/7677/qraliasing.png

我正在使用这个简单的代码来打印它:

WriteableBitmap bitmap = new WriteableBitmap(width, height);
//write bitmap pixels
Image image = new Image(){Stretch = Stretch.None};
image.Source = bitmap;
image.Width = bitmap.PixelWidth;
image.Height = bitmap.PixelHeight;
//Print
PrintDocument printDocument = new PrintDocument();
printDocument.PrintPage += (sender, args) =>
{
    args.PageVisual = image;
};
printDocument.Print("QrCode");
Run Code Online (Sandbox Code Playgroud)

c# silverlight

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

如何在运行时在Nhibernate中获取类映射信息?

NHibernate在运行时存储映射信息以及如何访问它?我需要在运行时获取给定映射类的关联属性(复杂属性).而且我不能依赖于读取hbm文件,因为映射可以在流畅的nhibernate中完成.

c# nhibernate nhibernate-mapping fluent-nhibernate

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

为什么通用函数中的代码忽略了重载的==运算符

这个问题的解决方法是什么?

class Program
{
    static void Main(string[] args)
    {
        var a = new Test();
        var b = new Test();
        var eq = Check(a, b);
    }

    private static bool Check<T>(T a, T b) where T : class
    {
        return a == b; //will not call overloaded == 
    }
}
public class Test
{
    public override bool Equals(object obj)
    {
        Test other = obj as Test;
        if (ReferenceEquals(other, null)) return false;
        return true;
    }
    public static bool operator ==(Test left, Test right) …
Run Code Online (Sandbox Code Playgroud)

c#

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

XAML ItemsSource和SelectedItem绑定声明命令确实重要吗?

我观察到一个奇怪的行为,我有一个绑定SelectedItem和ItemsSource的XAML Combobox(SilverLight4)声明,看起来SelectedItem和ItemsSource的顺序很重要......如果SelectedItem是第二个,则控件不能正确初始化(没有什么是选中),如果是代码,我可以理解为什么它很重要,因为你不能选择不在组合框项目集合中的项目,但这是XAML ...

我是否理解XAML属性顺序影响生成的代码行顺序?或者我的代码出了问题?

.net c# silverlight wpf xaml

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

如何正确设计应包含双语信息的类

如果我的域对象应该包含2种语言的字符串属性,我应该创建2个单独的属性还是创建一个新类型BiLingualString?

例如,在工厂分类应用程序中,工厂域对象可以包含Plant.LatName和Plant.EngName.

整个域的双语属性数量不多,大约6-8,我只需要支持两种语言,信息应该同时以两种语言呈现给UI .(所以这不是locallization).在开发过程中,要求不会改变.

它可能看起来像一个简单的问题,但这个决定将对验证,持久性,对象克隆和许多其他事情产生影响.

负面我可以想到使用新的dualString类型:

  • 验证:如果我要使用DataAnattations,Enterprise Library验证块,Flued验证,这将需要更多的工作,对象图验证比简单的属性验证更难.
  • 持久性:即NH或EF需要更多复杂特性的工作.
  • OOP:更复杂的对象初始化,我必须在使用它之前初始化这个新的Type in构造函数.
  • 架构:转换对象以在层之间传递它们更加困难,自动映射工具将需要更多的手工工作.

c# oop dns domain-driven-design class-design

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