WPF帶佔位符的TextBox

2022-02-13 07:10:13 字數 3453 閱讀 1016

效果圖如下:

使用的xaml**如下:

<

window

x:class

="placeholdertextbox.mainwindow"

xmlns

=""xmlns:x

=""xmlns:local

="clr-namespace:placeholdertextbox"

title

="mainwindow"

width

="525"

height

="350"

>

<

stackpanel

>

<

local:placeholdertextbox

placeholder

="查詢"

/>

<

textbox

x:name

="txttest"

local:placeholdermanager.placeholder

="搜尋"

/>

stackpanel

>

window

>

其中第乙個是帶佔位符的文字框,第二個使用附加屬性裝飾在現有的文字框上。

將乙個與佔位符繫結的textblock放入visualbrush內,在textbox的text為空時使用visualbrush繪製背景,不為空時背景設為null。

正因為如此,如果文字框設定了背景,使用此方法就會覆蓋原有的背景。但一般不會設定textbox的背景。

**較簡單,如下:

using

system.globalization;

using

system.windows;

using

system.windows.controls;

using

system.windows.data;

using

system.windows.media;

namespace

placeholdertextbox

set }

#endregion properties

#region public methods

public

placeholdertextbox()

;_placeholdertextblock.setbinding(textblock.textproperty, binding);

_placeholdertextblock.fontstyle =fontstyles.italic;

_placeholdervisualbrush.alignmentx =alignmentx.left;

_placeholdervisualbrush.stretch =stretch.none;

_placeholdervisualbrush.visual =_placeholdertextblock;

background =_placeholdervisualbrush;

textchanged +=placeholdertextbox_textchanged;

}#endregion public methods

#region events handling

//////文字變化的響應

/// ///

///private

void placeholdertextbox_textchanged(object

sender, textchangedeventargs e)

#endregion events handling}

}

**較簡單,如下:

using

system.collections.generic;

using

system.windows;

using

system.windows.controls;

using

system.windows.data;

using

system.windows.media;

namespace

placeholdertextbox

//////

設定佔位符

/// ///

佔位符所在的物件

///佔位符 public

static

void setplaceholder(dependencyobject obj, string

value)

#endregion attached dependencyproperty

#region events handling

//////佔位符改變的響應

/// ///

** ///

改變資訊

public

static

void

onplaceholderchanged(dependencyobject d, dependencypropertychangedeventargs e)

;placeholdertextblock.setbinding(textblock.textproperty, binding);

placeholdertextblock.fontstyle =fontstyles.italic;

var placeholdervisualbrush = new

visualbrush

;txt.background =placeholdervisualbrush;

txt.textchanged +=placeholdertextbox_textchanged;

txt.unloaded +=placeholdertextbox_unloaded;

txtbrushes.add(txt, placeholdervisualbrush);}}

//////

文字變化的響應

/// ///

///private

static

void placeholdertextbox_textchanged(object

sender, textchangedeventargs e)

}//////

文字框解除安裝的響應

/// ///

///private

static

void placeholdertextbox_unloaded(object

sender, routedeventargs e)

}#endregion events handling}

}

js 佔位符 正則 帶佔位符的正規表示式

這是一種更通用的方法,它不要求您提供模式,適用於多個佔位符,並且可以匹配多個單詞的佔位符。比如說,我們有以下模板和輸入字串 string input hi john doe,how are you?i m jane.string template hi namevar how are you?i m...

WPF 限制Textbox輸入的內容

限制文字框textbox的輸入內容,在很多場景都有應用。舉個例子,現在文字框中,只能輸入0 1 2 3 4 5 6 7 8 9 這11個字元。限制輸入0 9很容易實現,關鍵是這個 符號。它在wpf中對應的是key.oempipe鍵。如果直接允許該鍵輸入,那麼會有 這個符號也可以輸入。那麼問題來了,怎...

佔位符的使用

preparestatement介面改善問題 佔位符 演示 使用statement介面物件傳送的sql語句需要在資料庫中進行一次編譯之後成為指令才能執行,每條sql語句都需要編譯一次,這樣是很慢的。使用statement介面才做的sql可以需要使用字串拼接的方式實現,這樣的方式可能存在sql注入的安...