WPFの日常開発に用いる知識点(一)

4942 ワード

本章では、日常的にWPFを使用してソフトウェアを開発する過程で使用した知識点を記録し、自分が後で忘れないように記録する.
1、テンプレートを書き換える時、枠線に1つの画素を設置することを発見したが、運行効果は1つの画素ではなく、ぼやけている.
解決方法:ピクセル位置合わせをオンにし、プロパティSnapsToDevicePixels="True"を設定
2、線を引くにはRextangleを使うか、分割線を使うか

3、Buttonをキーボードのリターンキーに応答させ、属性(IsDefault)をTrueに設定すればよい.他のキーの場合は、KeyDownイベントとKeyUpイベントでアクティブ化できます.
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
   if(e.KeyStates == Keyboard.GetKeyStates(Key.D8) && Keyboard.Modifiers == ModifierKeys.Shift)
   {
       var input = "*";
   }
}

4、
WPFソフトウェアの終了、スレッドの終了:一部のアプリケーションのライフサイクルは、メインウィンドウまたは最後のウィンドウがいつ閉じるか、またはウィンドウに依存しない可能性があります.これらのシーンでは、ShutdownModeプロパティをOnExplicitShutdownに設定する必要があります.これは、アプリケーションを停止するために明示的なShutdownメソッド呼び出しが必要です.そうでない場合、アプリケーションはバックグラウンドで実行されます.
ShutdownModeをOnLastWindowCloseに設定すると、WPFはアプリケーションの最後のウィンドウが閉じたときにShutdownを呼び出します.現在インスタンス化されているウィンドウがメインウィンドウに設定されていても、新しいウィンドウが開き、閉じていなければ呼び出されません.
ShutdownModeのOnMainWindowCloseは、現在他のウィンドウが開いている場合でも、WPFがShutdownを暗黙的に呼び出すと、MainWindowが閉じます.
public void Close()
{    
    //       
    App.Current.MainWindow.Close();
    App.Current.ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown;
    App.Current.Shutdown();
    //        ,      
    Environment.Exit(0); //      ,    
}

5.検索スタイル、テンプレート内のコントロール名
public void Test()
{
   :
    ComboBox combo = (ComboBox)sender;
    if (combo != null)
    {
        var txt = combo.Template.FindName("PART_EditableTextBox", combo);
        Controls.WaterMaskTextBox waterBox = txt as Controls.WaterMaskTextBox;
        if (waterBox != null)
        {
            waterBox.CaretIndex = nlength;
        }
    }

   :
    var bord = VisualTreeHelper.GetChild(this, 0) as Border;
    Grid gr = bord.FindName("radioGd") as Grid;
    Grid gr2 = gr.FindName("gridDeal") as Grid;
}

6、TextBoxにおけるシールド入力法;パスワード入力に一般的に適用
xmlns:input="clr-namespace:System.Windows.Input;assembly=PresentationCore"
//      
input:InputMethod.IsInputMethodEnabled="False"

7、ListBoxコントロールでは、選択された複数または単一の機能を設定し、属性SelectionMode(列挙タイプ)を設定することで実現することができ、これ以上実現する必要はない.
Extended            Shift          。Ctrl      
Multiple                      。
Single                 。

8、インタフェースデータがバインディングの属性に更新されなかった原因:
UpdateSourceTrigger            ,     Mode=TwoWay,       ,            。
UpdateSourceTrigger         :Default,PropertyChanged,LostFocus,Explicit。
    Default:        .    TextBox,   LostFocus      ,        .
    PropertyChanged:               ,       .  , TextBox     ,      ,         .                ,TextBox   Text    .
    Explicit:  UpdateSourceTrigger     Explicit,          ,             。

9、コントロールが無効な状態で、ボタンはヒント情報を浮遊させず、イベントトリガのメカニズムである.使用不可にする場合は、コントロールの外側にレイヤーを追加するか、ToolTipServicesを追加できます.ShowOnDisabledプロパティは次のように設定されます.

    

10、Window 窗口获得焦点和失去焦点事件(窗口变为背景窗口、窗口切换等都引起窗口焦点失去)

/*
Activated         Deactivated       :
    Activated:      (       ;             ;              )
    Deactivated:    , Activated    ,(Deactivated = de + activated)
           :
     XAML   ,           :
*/


            
private void Window_Activated(object sender, EventArgs e)
{
    System.Windows.MessageBox.Show("It is activating...");
}
//            :

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        this.Activated += Window_Activated;
    }

    private void Window_Activated(object sender, EventArgs e)
    {
        System.Windows.MessageBox.Show("It is activating...");
    }
}
//    Deactivated        。

11、Windowウィンドウで「Popup」コントロールを使用し、ポップアップされたウィンドウは常にトップに置かれ、ウィンドウがフォーカスを失う(新しい他のソフトウェアプログラムを開くなど、「Popup」コントロールはやはり一番前に表示され、フォームに従って変化していない)場合、「Popup」コントロールスタイルを変更しない場合、windowの属性「Deactivated」でコントロールすることができ、フォーカスを失ったときに隠すことができる.フォーカスが得られたときに表示されます.
12、VS 2013では、中国語の方法を検索し、Ctrl+Fは、大文字と小文字を区別せず、全字一致を使用し、正規表現を使用する.
            :(".*[\u4E00-\u9FA5]+)|([\u4E00-\u9FA5]+.*")

13、WPFにおけるLableまたはTextBlockなどのコントロールフォントの太字と斜体の設定
Label1.FontWeight = FontWeights.Bold;//  
Label1.FontStyle = FontStyles.Italic;//  

14、
15、
16、
17、
18、
19、
20、