正在考虑System.Collections.ObjectModel ObservableCollection<T>上课.这个很奇怪,因为
我需要的是将一批对象添加到集合中,并且侦听器还将批处理作为通知的一部分.我错过了ObservableCollection的东西吗?还有其他课程符合我的规范吗?
更新:尽量不要自己动手.我必须建立添加/删除/更改等等.很多东西.
相关问:https:
//stackoverflow.com/questions/670577/observablecollection-doesnt-support-addrange-method-so-i-get-notified-for-each
您的一名团队成员被任命为"技术主管"或"团队领导",但他在技术上不称职,缺乏重要的领导技能.
技术上无能,我的意思是这个人不知道抽象类和接口之间的区别,不明白为什么要避免耦合,不理解凝聚力的概念,提供解决方案而不需要花些时间去思考,不明白为什么我们应该支持组合而不是继承,并且不会得到设计模式(除了单例模式).
此外,这个人有超过10年的"经验"(是的,我确实把这个词放在引号中,因为他给出了一个完全不同的经验体验).
我在和工作中的这个人打交道.它消除了我对这个职业的热情.
你怎么反应?你是做什么?
"取消"按钮背后的基本思想是使用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)
考虑以下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(参见本帖中的最后一个回复) - 这对我来说听起来有点奇怪.
对于引用类型,对象的内存布局是
| Type Object pointer|
| Sync Block |
| Instance fields...|
Run Code Online (Sandbox Code Playgroud)
对于值类型,对象布局似乎是
| Instance fields...|
Run Code Online (Sandbox Code Playgroud)
对于引用类型,GetType表示从"类型对象指针"中查找对象.给定引用类型对象的所有对象都指向同一类型对象(也有方法表)
对于值类型,此指针不可用.那么GetType()如何工作?
我查了一下谷歌,我发现了这个片段..这有点模糊.有人可以详细说明吗?
解决方案是存储值的位置可以仅存储特定类型的值.这由验证者保证. 资源
当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#经验.我想学习一些WPF和MVVM模式.这个网站上的文章有很多链接,但我有点不知所措.对于一个忘记者来说,一个明智的方法是忘记mvvm一段时间,然后快速学习一点WPF,然后再回到MVVM?
我有一篇文章通过Application = Code + Markup - Charles Petzold今天上班,它似乎没有提到MVVM(至少不在索引中).我对此感到非常惊讶,因为我认为MVVM应该是WPF的"通用语言"?
此外,我刚刚开始在一家新公司工作,他们正在使用MVM和WinForms,有没有人遇到过这个?
任何人都可以推荐一本能教我WPF和MVVM的书吗?
这一切都始于一个有趣的问题,有人向我提出.(它在书中提到 - 简而言之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) 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次.此外,所有的事件参数参数也是相同的,所以我无法区分最后一个参数.
任何想法为什么这是它的方式?
我已经在网上搜索了一段时间了.我正在为OOD实践寻找小样本练习(以及一些内部TDD研讨会).
如果有一个地方,这个需求正在服务,请指出我..并关闭这个问题
约束:
类似的问题60109,但答案不符合我的需要.我发现在长时间接触日常工作后,我已经失去了与OOD的联系(正在捣乱的想法).需要把它拿回来..
更新:我们是否集体参加短暂的OOP练习?我希望我有一大堆可以选择.然而,我的网络搜索(这是制定正确的搜索字符串的差异练习)和缺乏响应似乎表明不是这样.也许我在一个糟糕的时间发布到SO ...在这种情况下碰撞这个线程以获得更多响应.
c# ×4
wpf ×3
.net ×2
.net-3.5 ×1
button ×1
c#-4.0 ×1
collections ×1
mouseevent ×1
mvvm ×1
oop ×1
treeview ×1
treeviewitem ×1
types ×1
xpath ×1