小编Gis*_*shu的帖子

哪个.Net集合可以一次添加多个对象并收到通知?

正在考虑System.Collections.ObjectModel ObservableCollection<T>上课.这个很奇怪,因为

  • 它有一个Add方法,只接受一个项目.没有AddRange或等价物.
  • Notification事件参数有一个NewItems属性,它是一个IList(对象..而不是T)

我需要的是将一批对象添加到集合中,并且侦听器还将批处理作为通知的一部分.我错过了ObservableCollection的东西吗?还有其他课程符合我的规范吗?

更新:尽量不要自己动手.我必须建立添加/删除/更改等等.很多东西.


相关问:https:
//stackoverflow.com/questions/670577/observablecollection-doesnt-support-addrange-method-so-i-get-notified-for-each

c# collections .net-3.5

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

当你的团队领导不称职时你到底做了什么?

您的一名团队成员被任命为"技术主管"或"团队领导",但他在技术上不称职,缺乏重要的领导技能.

技术上无能,我的意思是这个人不知道抽象类和接口之间的区别,不明白为什么要避免耦合,不理解凝聚力的概念,提供解决方案而不需要花些时间去思考,不明白为什么我们应该支持组合而不是继承,并且不会得到设计模式(除了单例模式).

此外,这个人有超过10年的"经验"(是的,我确实把这个词放在引号中,因为他给出了一个完全不同的经验体验).

我在和工作中的这个人打交道.它消除了我对这个职业的热情.

你怎么反应?你是做什么?

collaboration

32
推荐指数
9
解决办法
7625
查看次数

WPF Button.IsCancel属性如何工作?

"取消"按钮背后的基本思想是使用Escape Keypress关闭窗口.

您可以将"取消"按钮上的IsCancel属性设置为true,从而使"取消"按钮自动关闭对话框而不处理Click事件.

资料来源:编程WPF(格里菲斯,卖出)

所以这应该工作

<Window>
<Button Name="btnCancel" IsCancel="True">_Close</Button>
</Window>
Run Code Online (Sandbox Code Playgroud)

然而,我期望的行为并不适合我.父窗口是Application.StartupUri属性指定的主应用程序窗口.有效的是

<Button Name="btnCancel" IsCancel=True" Click="CloseWindow">_Close</Button>

private void CloseWindow(object sender, RoutedEventArgs) 
{
    this.Close();
}
Run Code Online (Sandbox Code Playgroud)
  • 根据窗口是普通窗口还是对话框,IsCancel的行为是否不同?只有在调用ShowDialog时,IsCancel才能像宣传的那样工作吗?
  • 按钮是否需要显式的Click处理程序(IsCancel设置为true)才能关闭Escape印刷机上的窗口?

wpf button

32
推荐指数
3
解决办法
3万
查看次数

如何通过XPath检索CDATA标记内的元素文本?

考虑以下xml片段:

<Obj>
   <Name><![CDATA[SomeText]]></Name>
</Obj>
Run Code Online (Sandbox Code Playgroud)

如何通过XPath检索"SomeText"值?我正在使用Nauman Leghari(优秀的)Visual XPath工具.
/Obj/Name返回元素
/Obj/Name/text()返回空白

我不认为这个工具有问题(我可能错了) - 我也读过XPath无法提取CDATA(参见帖中的最后一个回复) - 这对我来说听起来有点奇怪.

xpath

30
推荐指数
3
解决办法
6万
查看次数

ValueType.GetType()如何确定结构的类型?

对于引用类型,对象的内存布局是

| Type Object pointer|
|    Sync Block      |
|  Instance fields...|
Run Code Online (Sandbox Code Playgroud)

对于值类型,对象布局似乎是

|  Instance fields...|
Run Code Online (Sandbox Code Playgroud)

对于引用类型,GetType表示从"类型对象指针"中查找对象.给定引用类型对象的所有对象都指向同一类型对象(也有方法表)

对于值类型,此指针不可用.那么GetType()如何工作?

我查了一下谷歌,我发现了这个片段..这有点模糊.有人可以详细说明吗?

解决方案是存储值的位置可以仅存储特定类型的值.这由验证者保证. 资源

.net c# types

28
推荐指数
2
解决办法
4898
查看次数

新的"动态"C#4.0关键字是否弃用了'var'关键字?

当C#4.0出来时,我们有动态关键字,如Anders Hejlsberg在这个优秀的演示文稿中所描述的那样(C#的发展速度超过了我能跟上的速度......我没有太多时间熟悉var关键字)

我还需要var关键字吗?var有什么可以做的......动态不能吗?

var x = SomeFunctionThatIKnowReturnsSomeKindOfList();
// do something with x

dynamic x = SomeFunctionThatIKnowReturnsSomeKindOfList();
// do something with x
Run Code Online (Sandbox Code Playgroud)

c# dynamic-languages c#-4.0

27
推荐指数
2
解决办法
4911
查看次数

学习WPF和MVVM - 从头学习的最佳方法

我有三年的c#经验.我想学习一些WPF和MVVM模式.这个网站上的文章有很多链接,但我有点不知所措.对于一个忘记者来说,一个明智的方法是忘记mvvm一段时间,然后快速学习一点WPF,然后再回到MVVM?

我有一篇文章通过Application = Code + Markup - Charles Petzold今天上班,它似乎没有提到MVVM(至少不在索引中).我对此感到非常惊讶,因为我认为MVVM应该是WPF的"通用语言"?

此外,我刚刚开始在一家新公司工作,他们正在使用MVM和WinForms,有没有人遇到过这个?

任何人都可以推荐一本能教我WPF和MVVM的书吗?

wpf mvvm

26
推荐指数
3
解决办法
3万
查看次数

何时调用Double的==运算符?

这一切都始于一个有趣的问题,有人向我提出.(它在书中提到 - 简而言之C#)下面是它的要点.

Double a = Double.NaN;
Console.WriteLine(a == a); // => false
Console.WriteLine(a.Equals(a)); // => true
Run Code Online (Sandbox Code Playgroud)

以上似乎不对.a应始终为==自身(引用相等)并且两者应该是一致的.

看起来像Double重载==运算符.反射器确认如下:

[__DynamicallyInvokable]
public static bool operator ==(double left, double right)
{
    return (left == right);
}
Run Code Online (Sandbox Code Playgroud)

奇怪的是看起来递归并且没有提到NaN特定的行为.那为什么它会返回假?

所以我添加了一些代码来区分

var x = "abc";
var y = "xyz";
Console.WriteLine(x == y); // => false
Run Code Online (Sandbox Code Playgroud)

现在我明白了

    L_0001: ldc.r8 NaN
    L_000a: stloc.0 
    L_000b: ldloc.0 
    L_000c: ldloc.0 
    L_000d: ceq 
    L_000f: call void [mscorlib]System.Console::WriteLine(bool)
    L_0014: nop 
    L_0015: ldloca.s a
    L_0017: ldloc.0 
    L_0018: call instance bool [mscorlib]System.Double::Equals(float64)
    L_001d: call …
Run Code Online (Sandbox Code Playgroud)

.net c#

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

为什么每次双击都会多次引发TreeViewItem的MouseDoubleClick事件?

XAML

<TreeView Name="GroupView" ItemsSource="{Binding Documents}">
            <TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}">
                    <EventSetter Event="MouseDoubleClick" Handler="OnTreeNodeDoubleClick"/>
                </Style>
            </TreeView.ItemContainerStyle>
            ....
</TreeView>
Run Code Online (Sandbox Code Playgroud)

代码隐藏

private void OnTreeNodeDoubleClick(object sender, MouseButtonEventArgs mouseEvtArgs)
       {
           Console.WriteLine("{3} MouseDoubleClick Clicks={0} ChangedButton={1} Source={2} Handled={4} ButtonState={5}",
               mouseEvtArgs.ClickCount, mouseEvtArgs.ChangedButton, mouseEvtArgs.OriginalSource,
               mouseEvtArgs.Timestamp, mouseEvtArgs.Handled, mouseEvtArgs.ButtonState);
       }
Run Code Online (Sandbox Code Playgroud)

我发现只需双击一次,就会多次调用事件处理程序.我试图在选项卡中打开一个文件,双击相应的树节点; 所以我需要过滤掉额外的电话.

23479156 MouseDoubleClick Clicks=1 ChangedButton=Left Source=System.Windows.Controls.TextBlock Handled=False ButtonState=Pressed
23479156 MouseDoubleClick Clicks=1 ChangedButton=Left Source=System.Windows.Controls.TextBlock Handled=False ButtonState=Pressed
Run Code Online (Sandbox Code Playgroud)

在我稍微复杂的应用程序中,每次双击它会被提升4次.在一个简单的repro-app上,每次双击它会被提升2次.此外,所有的事件参数参数也是相同的,所以我无法区分最后一个参数.

任何想法为什么这是它的方式?

wpf treeview mouseevent treeviewitem

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

OOD/OOP练习曲/代码练习

我已经在网上搜索了一段时间了.我正在为OOD实践寻找小样本练习(以及一些内部TDD研讨会).
如果有一个地方,这个需求正在服务,请指出我..并关闭这个问题

约束:

  1. 与语言无关的现实世界问题
  2. 小:最多需要一个小时到两个才能解决的东西(或者具有可以适应此约束的子部分).
  3. 不以算法为中心:不专注于解决计算任务.(有多个站点提供此类别.)涉及> 2个交互实体.
  4. 多人解决,最好是你自己:善良验证.链接首选.请不要发布可能是一个好运动的东西......主观

类似的问题60109,但答案不符合我的需要.我发现在长时间接触日常工作后,我已经失去了与OOD的联系(正在捣乱的想法).需要把它拿回来..

更新:我们是否集体参加短暂的OOP练习?我希望我有一大堆可以选择.然而,我的网络搜索(这是制定正确的搜索字符串的差异练习)和缺乏响应似乎表明不是这样.也许我在一个糟糕的时间发布到SO ...在这种情况下碰撞这个线程以获得更多响应.

oop

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