記錄學習WPF中的一些小Tips

2021-10-10 06:07:52 字數 3653 閱讀 2531

一些不起眼,但是因為不熟悉,沒遇到過,而糾結半天的小問題。

1、滑鼠懸浮改變背景顏色問題

問題描述:如下圖,是乙個黑色邊框,裡面巢狀乙個grid,grid裡面加乙個textblock。想要的效果是滑鼠移到grid裡面就實現改變整個grid的背景色。

布局**:

<

border borderbrush=

"black" borderthickness=

"1" margin=

"100,150"

>

<

textblock text=

"測試背景色" background=

"red" foreground=

"white" width=

"100" height=

"50"

/>

<

style targettype=

"grid"

>

<

trigger property=

"ismouseover" value=

"true"

>

<

setter property=

"background" value=

"black"

/>

<

/trigger>

<

/style.triggers>

<

/style>

<

/grid.style>

<

/grid>

<

/border>

現實是滑鼠移到textblock時,才能改變grid的背景色。(該例子僅說明問題,實際我是在重寫control template時遇到的問題,例如設計乙個複雜的button,也會設計滑鼠懸浮改變背景色)

解決方法:很簡單,給grid新增乙個background屬性。

2、使用datatrigger繫結textblock的text屬性

問題描述:例如將textblock的內容繫結到radiobutton是否被選擇,如果選擇了則改變textblock的內容。如果用c#**寫會比較簡單,但是我喜歡使用觸發器實現一些小功能。例如下圖,預設選中男性,如果選擇女性則改變文字內容,並且文字顯示成紅色。

布局**:

<

border borderbrush=

"black" borderthickness=

"1" margin=

"100,150"

>

<

stackpanel orientation=

"horizontal"

>

<

textblock margin=

"10" text=

"選擇男性"

>

<

style targettype=

"textblock"

>

<

datatrigger binding=

"" value=

"false"

>

<

setter property=

"text" value=

"選擇女性"

/>

<

setter property=

"foreground" value=

"red"

/>

<

/datatrigger>

<

/style.triggers>

<

/style>

<

/textblock.style>

<

/textblock>

<

radiobutton name=

"radiobtn_male" content=

"男" margin=

"10" ischecked=

"true"

/>

<

radiobutton content=

"女" margin=

"10"

/>

<

/stackpanel>

<

/border>

實現思路:就是使用datatrigger 將文字內容和男性radiobutton的 ischecked繫結,如果沒選擇就顯示選擇女性。看起來沒啥問題,可是實際執行起來卻不能改變text的屬性,但是可以改變文字顏色。

解決方法:將在textblock標籤內設定的text屬性拿出來,在style中設定

<

setter property=

"text" value=

"選擇男性"

/>

執行效果:

3.去除datagrid最左側和最右側的兩列

看一下沒有去除時的樣子

圖中紅色方框就是左側和右側多出的兩列。

對於左邊那列,可以設定headersvisibility="column"去除,效果如下

對於右側出現的這列,其實是因為設定了ip和port兩列的列寬,但是兩列的列寬又不足以充滿datagrid的寬度,那就自動產生了右側那列,補全空間。

所以,要麼datagrid的寬度設小一點,以至於會出現水平的滾動條,如下圖

要麼,讓本該是最右邊的那列,port列,寬度為*,如下圖,那port這列將充滿右邊

持續更新中…

備份的一些小tip

npm官方映象 亞馬遜s3 host 219.76.4.4 github cloud.s3.amazonaws.com 修改gitingonre後重新版本控制 git rm r cached git add npmrc各種國內映象 殺死對應包的後台程序 adb shell am kill packa...

記錄一些 小程式

1 給定乙個整型陣列,有正數,負數和0.求出連續的子串行中的和的最大值。qiuhe.c 例如 int a 10 的最大值為子串行 7,9,2,0,5 求和,值為19 include int a int main else printf max d n max 2 輸入乙個已經按公升序排序過的整型陣列...

CSS學習筆記(記錄一些小技巧)

一 css簡介 css 是cascading style sheets的縮寫,中文意思是級聯樣式表,只要是任何和樣式有關的,布局 樣式 顏色 大小等等,都與css相關。css 是用來解決內容與表現分離的問題。把內容和樣式分離開 二 css語法 css語法 selector 選擇器 屬性 值 clas...