• WPF-控件的常用属性-单例-隧道事件


    特殊字符

    小于<

    大于>

    空格xml:space="preserve"

    例如:TextBox Grid.Column="1" xml:space="preserve">aaaaa .

    从一个xaml文件中获取xaml内容

    //DependencyObject是wpf控件的基类,它可以放到任何类型容器中
    DependencyObject rootElement;
    using (FileStream fs = new FileStream(xamlFile,FileMode.Open))
    {
        rootElement = (DependencyObject)XamlReader.Load(fs);
    }
    this.Content = rootElement;
    //根据name获取xaml中的button
    Button button = (Button)LogicalTreeHelper.FindLogicalNode(rootElement, "btnName");
    button += buttonClick;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    隧道事件

    隧道路由事件,方向与冒泡路由事件相反,从最外层往里层。隧道事件一般和冒泡事件成对出现,只不过事件名称前面加上Preview。

    隧道事件的可以先使用preview*Down截获。隧道事件总是在冒泡事件触发前触发。例如:

    键盘事件

    隧道-冒泡

    PreviewKeyDown-KeyDown

    PreviewTextInput-TextInput

    PreviewKeyUp-KeyUp

    等等

    鼠标事件

    MouseEnter\MouseLeave直接事件

    PreviewMouseMove\MouseMove隧道或者路由事件
    鼠标单击事件其实是捕捉到鼠标按键释放事件
    Mouse.Capture鼠标捕获,当鼠标被捕获时,鼠标就不能点击其他位置
    DrapDrop.DoDragDrop()可以设置拖动事件(如拖动textbox中的文本到另一个TextBox)

    字体

    可以将字体加入资源中,FontFamily=“./#bayern”(不用写tff扩展名)
    当字体过小时,可能会出现不清晰的情况如字体大小小于15,可以使用TextOptions.TextFormattingMode="Display"来设置

    控件

    使用_作为快捷点,如_A
    Label有一个Target属性,可以快速链接到某个控件Choose _A,也就是快速把焦点定位在某个控件上

    Button

    IsCancel属性,当为true时,按住ESC键会执行
    IsDefault属性,当为true时,按住Enter键会执行

    Window

    WindowStartupLocation
    WindowStyle
    AllowsTransparency

    RadioButton

    要设定GroupName

    ToolTip

    任何控件都可以使用ToolTip属性
    复杂的ToolTip可以使用控件的嵌套属性
    ToolTip设置提示出现的位置 以鼠标为基准,水平偏移25

    Popup

    设置IsOpen属性来打开或者关闭

    ScrollViewer

    CanContentScroll="True"根据元素滚动,而不是根据行

    Expander

    属于带有Header的内容控件
    ExpandDirection属性决定向哪里扩展
    在这里插入图片描述

    TextBox

    TextWrapping属性:可自动折行
    MaxLength属性:最大长度
    SelectionStart选中文本开始的位置
    SelectionLength:选中长度
    SelectionText:选中文本
    SpellCheck.IsEnable拼写检查:不支持中文

    Slider

    TickPlacement属性设置显示刻度
    IsSelectionRangeEnable设置某个范围(如背景色不同)
    在这里插入图片描述

    ProgressBar

    IsIndeterminate属性是否有脉冲动画

    Calendar

    DisplayMode
    DisplayDateStart
    DisplayDateEnd
    SelectedMode范围

    UniformGrid

    提供一种在网格(网格中的所有单元格都具有相同的大小)中排列内容的方法, 相当于简化版本的Grid

    Application

    在App.xaml中,设置ShutdownMode属性可以设置关闭Application的方式

    事件

    Startup在调用run之后,主窗口显示之前触发
    Exit事件在关闭之前触发
    SessionEnding事件在Windows对话结束的时候触发,如注销用户,关闭计算机
    DispatcherUnhandledException在有未处理的异常时触发

    显示初始界面

    将图片设置为SplashScreen

    读取当前Application对象

    Application.Current.MainWindow

    单例

    1. 引用Microsoft.VisualBasic
    2. 创建一个继承自ApplicationServices.WindowsFormsApplicationBase类SignalApplicationServices
    3. 在该类的构造函数中设置this.IsSingleInstance=true
    4. 重写该类的OnStartup方法
    WPFApp app
    app = new WPFApp();
    app.Run();
    return false;
    
    • 1
    • 2
    • 3
    • 4
    1. 重写onStartupNextInstance方法
      app.showWindow
    2. 在Main函数中
    SignalApplicationServices app = new SignalApplicationServices();
    app.run();
    
    • 1
    • 2

    绑定到非元素对象

    Source属性
    RelativeSource
    DataContext

    资源

    定义资源一定要在使用资源之前
    Application并不是资源的最后一级,系统中的资源才是,使用三个类
    SystemColor
    SystemFont
    SystemParmams
    如: