小编Sto*_*ver的帖子

WPF中的数据绑定现象(绑定到FrameworkElement) - 任何想法为什么?

在我的应用程序中(这与非常动态的导航和内容呈现有关)我必须在XAML中使用这个构造:

<ContentControl Content={Binding ContentElement} />
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.这很棒,绝对棒极了.我可以在任何地方接待任意的东西.

但似乎有一个奇怪的,好吧,让我们称之为WPF中的"现象"(我相信它在BindingMarkupExtension中,但还不确定):

当我的ContentElement属性如下所示:

public FrameworkElement ContentElement
{
    get
    {
        return this.m_ContentElement;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后getter被称为TWICE(!!!)用于每个数据绑定操作(这包括用户在运行时更改语言或重新加载主机控件时).

然而(这对我来说真是难以置信):

当我将ContentElement属性更改为:

public object ContentElement
{
    get
    {
        return this.m_ContentElement;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后getter被调用一次.说真的,我不是在这里.它在最简单的应用程序中绝对可重现,您可以尝试返回一个新的"TextBlock"(这就是我通常用来测试或了解更高级的WPF概念).

有什么想法吗?

我问的原因是我讨厌解决方案的以下后果:

  • 我此时失去了类型安全性
  • 这可能有点难以向新开发人员解释或过于持怀疑态度

data-binding wpf

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

我如何手动编写复杂的公式解析器?

嗯,这是语言不可知的,我更喜欢用C#或F#来做,但是这次我更感兴趣的是"无论如何这样做".

我想要完成的是:

a)我想学习它 - 这次是关于我的自我,这是一个有趣的项目,我想向自己展示我对这个东西非常擅长

b)我对EBNF知之甚少(虽然我还不知道,运算符优先级如何在EBNF中起作用 - Irony.NET做得对,我查看了这些例子,但这对我来说有点不祥)

c)我的解析器应该能够这样:5*(3 +(2 - 9*(5/7))+ 9)例如,给我正确的结果

d)坦率地说,这似乎是为我编写编译器甚至是解释器的最大问题.我甚至可以生成64位汇编代码(我可以手动编写汇编程序),但公式解析器...

e)另一种想法:即使是简单的计算机(比如我的旧款Sharp 1246S只有大约2kB的RAM)也能做到这一点......它不会那么难,对吧?甚至非常非常古老的编程语言都有公式评估... BASIC是从1964年开始的,他们已经可以计算出我所提出的公式类型作为例子

f)一些想法,一些灵感就足够了 - 我根本不知道如何做运算符优先级和括号 - 但是,我知道它涉及AST并且许多人使用堆栈

所以你怎么看?

language-agnostic compiler-construction parsing interpreter formula

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

单元测试基于时间的组件?

所以我正在编写一个缓存系统(不是太复杂,但它有非常好的语义)和ttl(生存时间)的项目.

当然ttl必须经过单元测试,但由于无法在C#中注入"IDateTime"或"ITimeSpan"的新实现(因为没有这样的东西),你会怎么做呢?

首先写一个新的组件"IDateTimeProvider"和"DateTimeProvider",然后哪个可以模拟?

是不是重新实现了.NET运行时库的一部分......难以理解?

编辑:谢谢大家的惊人答案!我现在知道我要做什么了!

c# datetime unit-testing

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

MVVM:如果后台线程不断更改模型怎么办?

这对我来说是个大问题.我想编写一个从在线WCF服务中获取数据的WPF/MVVM应用程序.

问题是,提取过程必须是每个,比如15秒(这是一个时间关键的应用程序).

有一个不断变化的IEnumerable,每次检查WCF服务时,我都会得到不同的值,因为还有时间数据.

我该怎么办呢?清除ViewModel中的ObservableCollection可能不对,或者是吗?

data-binding wpf mvvm

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

C#:优化字典访问(键结构中的哈希)

因此,我需要在C#中创建一个结构,该结构将充当(很大)字典的键,如下所示:

private readonly IDictionary<KeyStruct, string> m_Invitations;
Run Code Online (Sandbox Code Playgroud)

问题是,我真的需要一个结构用作键,因为只能通过两个单独的数据项来标识条目,其中一个可以是空(不仅是空!)字符串。

我需要在该结构上实现什么?您将如何创建哈希?哈希冲突(偶尔发生)会严重影响性能还是可以忽略不计?

我问,因为这是“内循环”代码。

c# hash dictionary

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