DP是coding中经常谈到的问题,虽然DP种类繁多,但是常用的DP不过几种,这里将浅析C#常用的设计模式。
【单例模式】
描述:最“简单”的设计模式,顾名思义,这个类型只有一个实例,不能创建其他实例。这个类型提供一个公共的访问点让用户操作这个实例。
例子:
1 | class Single |
DP是coding中经常谈到的问题,虽然DP种类繁多,但是常用的DP不过几种,这里将浅析C#常用的设计模式。
【单例模式】
描述:最“简单”的设计模式,顾名思义,这个类型只有一个实例,不能创建其他实例。这个类型提供一个公共的访问点让用户操作这个实例。
例子:
1 | class Single |
在WPF中,不论是ListBox,ListView或者DataGrid,在使用中都会经常用到SelectedItems,但是在Xaml中却发现SelectedItems没有办法Binding。这是因为SelectedItems是一个只读属性,且不是一个DependencyProperty,所以没法Binding。不过我们却可以通过以下几种方法来实现这个功能:
【方案一】
使用后台代码,读取这个控件的SelectedItems属性。例如
XAML:
1 | <ListView ItemsSource="{Binding}" x:Name="lvTest"> |
那么后台就可以
在WPF中若使用多个控件,并给这些控件添加同一个ContextMenu,那么如何获取ContextMenu的鼠标点击源?
WPF的ContextMenu并没有Winform的ContextMenu的SourceControl这一属性,但我们也可以通过另一种方法实现同样的功能。
在ContextMenu的MenuItem的点击事件中使用ContextMenu.PlacementTarget
1 | public void MenuItem_Click(object sender, RoutedEventArgs e) |
在使用EF删除一对多关系的实体时,碰到如下提示:
“其他信息: 操作失败: 无法更改关系,因为一个或多个外键属性不可以为 null。对关系作出更改后,会将相关的外键属性设置为 null 值。如果外键不支持 null 值,则必须定义新的关系,必须向外键属性分配另一个非 null 值,或必须删除无关的对象。”
原因很简单,假设一个A对应多个B,那么B中的外键就是A的主键,如果先删除A,接着又把B读取到datacontext中
var lstB = a.B.ToList();
container.A.DeleteObject(a);
就会导致B中的外键失去关联,所以便产生了错误,解决的办法有下面几种:
125 Basic C# Interview Questions and Answers
英文原文:http://theprofessionalspoint.blogspot.jp/2013/10/125-basic-c-interview-questions-and.html
Below is the list of 125 basic C# interview questions with their answers. These C# interview questions and?answers?are very simple and straight-forward which cover the basic concepts of C# mostly related to object oriented concepts. So if you are preparing for C# interview, I will suggest you to must go through these 125 C# basic interview questions and answers to revise your C# concepts. Here goes the list of 125 basic C# interview questions and answers.
1. What is C#?
C# (pronounced “C sharp”) is a simple, modern, object-oriented, and type-safe programming language. It will immediately be familiar?to C and C++ programmers. C# combines the high productivity of Rapid Application Development (RAD) languages.
2. What are the types of comment in C#?
【问题】
在最近的项目中使用DataGrid的DataGridCheckBoxColumn绑定了后台TagModel类的IsSelected字段,数据源是TagModel类型的Dictionary,运行发现Checkbox不能正常勾选,提示错误:此视图不允许“EditItem”。
【问题重现】
前台:
1 | <DataGridCheckBoxColumn Binding="{Binding IsSelected}" /> |
在winform或wpf开发中,常会用到DragDrop拖放功能,如拖拽一个文件到程序窗体,则在文本控件上显示文件的路径,其他内容控件显示文件内容,这样省去输入文件路径或者打开文件对话框的麻烦。在实际应用中,我们也会看到一些影音播放器支持对拖放文件的播放,Office支持对拖放文件的插入等等。综合上述情况,多数情况下,我们关注了从程序外部拖放文件至程序,也就是拖过来。
那么如果现在做一个功能,需要我们把程序中的内容拖放到另一个程序中,比如直接拖拽程序中的图片控件到Word,就把图片控件中的图粘贴到Word中,也就是拖过去,这要怎么实现?
好久没写EF的东西,使用起来也觉得生疏,最近EF5发布,学习了一下新知识,总结一番。
什么是EF:EntityFrameWork是微软一个开源的ORM(对象关系映射)框架,是微软主推的数据存储技术,常用于构建数据存储层,使应用程序以对象模型的方式访问关系数据库的内容。
EF的架构和原理:EF的核心内容是EDM,具体可参考前一篇内容。可以理解为它是一个ADO.NET的增强版,它的底层是ADO.NET provider,上层则是应用程序,它提供了更灵活,更简单方便的数据存取方式。
EF的优点:它是一个开源框架,支持多种数据库(目前看来最稳定的是SQL Server,而Oracle的支持一直不太完美),将应用程序和数据库结构很好的分隔开,支持多种开发模式。
CreateBitmapSourceFromHBitmap内存泄露
用c#做图像处理的时候需要用到System.Drawing.Bitmap。在WPF中显示图像的Image控件接受的数据源是ImageSource,因此使用System.Drawing.Bitmap进行图像处理之后要把System.Drawing.Bitmap转换成ImageSource,转换方法如下:
1 | System.Drawing.Bitmap m_Bitmap = new System.Drawing.Bitmap("c:temptest.jpg", false); |
其中DeleteObject的声明如下:
1 | [ ] |
使用过System.Drawing.Bitmap后一定要用DeleteObject释放掉对象,不然内存不释放,很快系统内存就消耗光了。
WPF调用Winform控件实现主要分三步:
WPF调用Winform控件
1、添加两个引用:
WindowsFormsIntegration(负责整合WPF和Windows)
System.Windows.Forms
2、在 XAML文件中添加两个引用: