小编Dmi*_*ezo的帖子

文本在WPF窗口和ElementHost内部呈现不同

我使用WPF互操作性来在WinForms表单中托管WPF用户控件.一切正常,除了丑陋的文字渲染:

    <Label Content="Normal text" Name="labelNormal"/>
    <Label Content="Bold text" Name="labelBold" FontWeight="Bold" />
Run Code Online (Sandbox Code Playgroud)

- 这是WPF窗口上的简单标签:
WPF窗口http://img525.imageshack.us/img525/7049/wpfwindow.png

- 以及在WinForms中托管WPF用户控件时显示的相同标签:
WPF Interop http://i51.tinypic.com/14j4xnc.jpg

Interop变体是完全不同的:intercharacter间隔为零,文本看起来更纯粹的WPF变体.当普通文本可以接受时,粗体文本很难看.

有什么想法如何修复它?

先感谢您!

wpf elementhost

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

.NET中的线程池和.IsBackground

MSDN以及许多其他来源声称线程池中的工作线程始终是后台.

"线程池线程是后台线程." (MSDN)

"汇集的线程总是后台线程." (在C#中穿线,Joseph Albahari)

我可以通过设置轻松地使工作线程非背景

Thread.CurrentThread.IsBackground = false;
Run Code Online (Sandbox Code Playgroud)

应用程序将等待线程完成.

这有什么问题?

.net c# multithreading threadpool

7
推荐指数
3
解决办法
5260
查看次数

C#List <object> .RemoveAll() - 如何删除列表的子集?

我有2个类feed_Auto和具有多个匹配属性的Product.对于这个特殊问题,AutoID是我需要使用的唯一字段.

我有List<FeedsAuto>几百个独特的条目.我有一个小List<Product>的10,20个独特的条目.我现在想要从大列表中删除小列表中的所有项目.

如何使用RemoveAll({lambda expression})来完成此任务?我发现的所有示例都取决于通用列表是简单类型(字符串,整数等).

private static int DoInserts(ref List<Model.feeds_Auto> source, ref List<Model.Product> target, Guid companyID)
{
    List<Model.Product> newProductList = new List<Model.Product>();
    List<Model.Product> dropSourceList = new List<Model.Product>();

    using (var db = Helpers.GetProdDB())
    {
        foreach (var src in source)
        {
            var tgt = target.Where(a => a.alternateProductID == src.AutoID && a.LastFeedUpdate < src.DateModified).FirstOrDefault();
            if (tgt == null)
            {
                newProductList.Add(new Model.Product{...});
                dropSourceList.Add(src);
            }
        }
        db.SaveChanges();

        if (dropSourceList.Count > 0)
        {
            source.RemoveAll(????);
        } …
Run Code Online (Sandbox Code Playgroud)

c# generics collections lambda

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

为什么字符串被密封

我很好奇为什么System.String是密封的?

我知道,我可以做任何我不需要继承的事情,但仍然 - 为什么?

有很多类本质上是具有特定方法和属性的字符串.这些是标识符,电子邮件,名称等.

面向对象的设计建议将功能封装在特定的类中.在这里,我们有一种奇怪的情况,即最流行的对象框架中最可用的基本类型是不可扩展的.

谢谢.

编辑.

关于不变性的评论.很容易在私有方法中隐藏所有与状态相关的东西,并允许子类具有对类数据的只读访问权限.

// Safe inheritable immutable string (pseudocode).
class String
{
   // Private state
   private byte[] state;
   private void EditState(byte[]) {}
   // Protected read-only access to state
   protected byte getReadOnlyData() {}
   // Available to child classes overridable methods.
   protected virtual getHashCode() {}
   protected virtual xxx() {}
}
Run Code Online (Sandbox Code Playgroud)

事实上,实际应用程序中的大多数对象都是字符串.所有这些连续出版物,ASIN,IMEI等,以及名称,评论,都是其性质的字符串.我们将它们作为数据库中的字符串,或者在网页上的文本框中键入字符串,或者通过条形码扫描仪等进行封装.

拥有特定功能的字符串,而不是发明多个类,或多或少做同样的事情,这将是非常好,更安全,更优雅.

.net c#

6
推荐指数
2
解决办法
1935
查看次数

SQL给最终用户:利弊

曾几何时,远在遥远的星系中,我见证了几位开发者之间的讨论.主题是,如果给最终用户访问生产SQL服务器(MS SQL 2008)是个好主意,以便让他们能够根据自己的数据制作自己的报告.

这是商界人士的要求 - "我们的客户希望制作自定义报告".

提出这个问题的人声称:

  1. 他能够通过一组权限为用户提供"只读访问权限",并使系统绝对安全.
  2. SQL最初是一种"最终用户"语言,现在可能就是这样.
  3. 拥有运行SQL查询的权限,用户将能够做他们想要的不干扰开发人员和支持.

其他反对此声称的人声称:

  1. 崩溃的MS SQL很容易崩溃.禁止进入.
  2. 无论如何,向最终用户公开SQL和数据库结构并不是一个好主意; 这是一个糟糕的设计.
  3. SQL对于非程序员来说太复杂了,因此,它不会让他们的生活更轻松.

您如何看待最终用户访问SQL?

先感谢您!

sql sql-server security reporting

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

string vs System.String,int vs System.Int32:另一个Alias vs Type Name问题

很多时候,我看到那里的语言的关键字与完整的类型名称进行替换源代码: System.String,System.Int32,System.GUID等.

此外,执行此操作的人在任何地方都写出完整的类型名称,使得源代码充满了这样的声明:

System.Collections.Generic.List<System.Reflection.PropertyInfo> list = System.Collections.Generic.List<System.Reflection.PropertyInfo>(newSystem.Reflection.PropertyInfo[] { ... });
Run Code Online (Sandbox Code Playgroud)

当我问他们为什么这样做时,我得到了广泛的答案:"这有助于我避免类型名称冲突","它看起来更专业","我的VS插件自动为我做"等.

据我所知,using如果在整个源代码文件中使用类型一次,有时编写完整类型名称可以帮助您避免编写不必要的内容.有时您需要明确声明一个类型,一个很好的例子是Threading Timer和WinForms Timer.

但是如果你完整的数据库调用来源而你仍然在编写System.Data.SqlClient.SqlCommand而不是'SqlCommand',那对我来说看起来有点奇怪.

你怎么看?我是对的还是我只是不明白的东西?

谢谢!

PS而另一种现象是写作if (0 != variable而不是if (variable != 0).

.net c# code-conversion

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

如果我担心内存使用情况,我应该避免使用MVVM吗?

我有一个应该紧凑的WPF应用程序,可能的内存占用量最小.从流程,几页和网格的角度来看,GUI很简单,但从图形,动画等角度来看,它非常丰富.

我有使用Prism编写应用程序的经验,我非常喜欢它.但它对于简单的任务看起来太沉重了.它不是LOB应用程序,但我仍然需要可测试性,GUI /流程/业务分离等.

我应该使用MVVM吗?

我不确定在尝试最小化应用程序的内存使用时,是否应该担心使用MVVM设计模式的开销.

.net c# wpf prism mvvm

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