C#、WPF笔记

Q8:WPF中如何RasieEvent

//示例,对于UI控件主动抛出一个MouseButtonEvent的事件:
this.RaiseEvent(new MouseButtonEventArgs(Mouse.PrimaryDevice, 0, MouseButton.Left) {RoutedEvent = UIElement.PreviewMouseDownEvent, Source = this });
                

Q7:WPF绑定的属性必须是 public 的

有一个类库,我用internal 关键字不公开里面的类,然后用[assembly: InternalsVisibleTo(“MyApp”)] 共享给友元程序MyApp使用 。MyApp是个WPF程序,在里面新建继承了原来库中的类,并把它改造成了可观测的(Observable)以便于WPF的控件进行绑定。

一切都正常也没有报错,但是在我运行之后我发现控件无法从绑定源获得更新,找了半天才发现这个原因。可以参考一下微软和Stack Overflow 的信息:Binding Sources OverviewBinding to an internal property?

Q6:如何保护DotNet程序不被反编译

下面这段话来自: 链接地址

将程序集中的相关Method(方法)编译成Unmanaged(非托管代码)

下面介绍的内容是不管你是菜鸟,或是高手,都无法得到核心代码的方它可称之为终极的保护手段,因为它就是“非托管代码”。

查看更多

Q5:生成随机文件名的方法比较

Path.GetRandomFileName拥有更复杂的算法,因为在运行了2亿次之后,我没有得到任何重复项。另一个结果是Guid.NewGuid()大约比Path.GetRandomFileName()快了5倍。

Q4:问题:调试正常,编译exe后无法正常运行(界面不显示)

经过排查,确认了是数据绑定的原因,有一种情况,当绑定源的属性为 {get {…}, private set{…} } 或者 {get {…}, protect set{…} } 时。若绑定模式为TwoWay就会导致这个问题。

Q3:语法 <in T>或<out T>

定义泛型时,in表示泛型不可以改变,即使它是对象类型。

in和out用在范型interface和delegate中, 用来支持逆变和协变(in是逆变,out是协变)。协变保留赋值兼容性,逆变与之相反。

参考内容

Q2:特性 [assembly: InternalsVisibleTo(“xxx”)]

对于访问等级为internal的类型,如果使用这个特性可以指定以xxx名称的程序集有访问权限。参考内容

Q1:特性 [Export]

参考内容

微软给我们提供的强大的组件化开发框架:System.ComponentModel.Composition。我也是刚刚接触不久,下面我就班门弄斧,向大家展示下一个简单的demo。

查看代码

One thought on “C#、WPF笔记

  1. Long time reader, first time commenter — so, thought I’d drop a comment..
    — and at the same time ask for a favor.

    Your wordpress site is very simplistic – hope you don’t mind me asking what
    theme you’re using? (and don’t mind if I steal it?
    :P)

    I just launched my small businesses site –also built in wordpress like yours– but
    the theme slows (!) the site down quite a bit.

    In case you have a minute, you can find it by searching for “royal cbd” on Google (would appreciate any feedback)

    Keep up the good work– and take care of yourself during the coronavirus scare!

    ~Justin

    1. The theme use is “Specia” .

      I’m not good at website optimization, suggestion is
      1. Inspect your site source to find the slow response elements;
      2. Use some optimization plugins like Hyper Cache;
      3. Consider the server system, runtime or network optimization;

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

17 − 2 =