意外地解決了乙個WPF布局問題

2021-09-05 19:38:40 字數 3621 閱讀 7722

今天做了乙個小測試,意外地將之前的乙個困擾解決了,原問題見《wpf疑難雜症會診》

中的「怎麼才能禁止內容撐大容器?」

以前我是在外側巢狀canvas容器來解決的,這樣實際上就是強制捨去了溢位部分,如果想實現多餘的文字轉變為省略號就辦不到了,而且漸變的結束點也是隨內容擴充套件到容器外面了。

現在改良為下面這段**,就達到了很好的效果:

<

page 

xmlns

=""xmlns:x

="">

<

page.resources

>

<

style 

targettype

="listboxitem"

>

<

setter 

property

="template"

>

<

setter.value

>

<

controltemplate 

targettype

="listboxitem"

>

<

border

>

<

border.background

>

<

lineargradientbrush 

startpoint

="0,0"

endpoint

="1,0"

>

<

gradientstop 

offset

="0"

color

="orangered"

/>

<

gradientstop 

offset

="1"

color

="brown"

/>

lineargradientbrush

>

border.background

>

<

textblock 

text=""

texttrimming

="characterellipsis"

/>

border

>

controltemplate

>

setter.value

>

setter

>

style

>

<

style 

targettype

="listbox"

>

<

setter 

property

="template"

>

<

setter.value

>

<

controltemplate

>

<

scrollviewer 

borderbrush=""

borderthickness=""

>

<

viewbox 

verticalalignment

="top"

>

<

stackpanel 

width=""

isitemshost

="true"

/>

viewbox

>

scrollviewer

>

controltemplate

>

setter.value

>

setter

>

style

>

page.resources

>

<

>

<

listbox

width

="120"

height

="220"

margin

="8"

borderbrush

="blue"

borderthickness

="3"

horizontalcontentalignment

="stretch"

>

<

listboxitem

>

1111111111

listboxitem

>

<

listboxitem

>

22222222222222222222

listboxitem

>

<

listboxitem

>

333333333333333333333333333333333333

listboxitem

>

<

listboxitem

>

44444444444444444444444444444444444444444

listboxitem

>

listbox

>

<

listbox

width

="180"

height

="220"

margin

="8"

borderbrush

="green"

borderthickness

="3"

horizontalcontentalignment

="stretch"

>

<

listboxitem

>

1111111111

listboxitem

>

<

listboxitem

>

22222222222222222222

listboxitem

>

<

listboxitem

>

333333333333333333333333333333333333

listboxitem

>

<

listboxitem

>

44444444444444444444444444444444444444444

listboxitem

>

listbox

>

>

page

>

效果:

在這裡我為listbox也重定義了乙個模板,為其listboxitem宿主容器stackpanel設定了寬度繫結,到這裡仍然無法解決問題,過寬的內容還是毫不客氣地超出容器寬度,並帶出橫向滾動條。

然後我又在stackpanel外圍加了乙個viewbox,問題就被神奇地解決了,而我自己還是一頭霧水~~

另外隨之而來了乙個新問題,看我在模板裡設定了邊框的繫結屬性:「」,在listbox的定義處也曾為它們制定過不同顏色的3畫素邊框,但是這不起作用了,怎麼設定都看不到listbox的邊框~不知道是怎麼回事。

誰能解釋一下靈異現象麼~

解決了乙個小問題

原來在debian上使用mplayer w32codecs一直彈出 error could not open required directshow codec drvc.so 的惱人的小問題,今天google了一下,參照fc6下mplayer安裝 執行 發現也有乙個類似libstdc so.5 n...

考考你乙個WPF布局

要建立如圖一樣布局,請問怎麼實現?其實考題本身沒有任何實用價值,只是一種思維的拓展。看似用dockpanel實現,那麼就錯了,因為top button沒有佔據top的全部。實際上是用了很簡單grid實現,如果你能用其他方式實現,歡迎跟帖。code window x class griddemo.co...

解決了乙個連線mysql特別慢的問題

最近使用了一台ucloud的雲主機作為測試伺服器 用了以後發現了乙個問題 假設我的資料庫伺服器為d 我的應用伺服器為a 新的這臺雲主機位c 這三颱機器都不在乙個機房 問題是這樣的 從a鏈結到d,沒有問題,但是從c鏈結到d,非常慢,要將近20秒才有響應 一開始使用a鏈結d沒問題,我認為問題出在c上面 ...