使用ListBox中遇到的問題

2022-01-11 05:16:12 字數 3779 閱讀 4568

這幾天一直與listbox打交道,對listbox的了解也加深了一層,這篇文章把相關的思路寫下來,為了簡化起見,省略了一些無關重要的東西

首先宣告資料來源物件,這裡以乙個簡單的類為例

public

class person

public

string lastname

}
public

class people : observablecollection

public people()
,
new person,
new person
};
}
}
資料來源已經建立好了,現在將其繫結到listbox中,這裡需要橫向繫結,sdk中有橫向繫結的實現,這裡就不再進行細說,按照需求,當滑鼠移到firstname時提示關於lastname的資訊,才開始做的時候總是無法顯示提示資訊,然後在網上找到了原因:附加屬性tooltipservice.tooltip並沒有繼承上層元素的datacontext

原因找到了,解決思路就清晰了,先宣告乙個值轉換器

public

class myconvert : ivalueconverter

return

null;

}
...
}
將相關的類宣告為資源

<

loacls:people

x:key="people"

>

loacls:people

>

<

loacls:myconvert

x:key="convert"

>

loacls:myconvert

>

xaml**:

<

grid

datacontext=""

>

<

listbox

itemssource=""

scrollviewer.verticalscrollbarvisibility="hidden"

>

<

itemscontrol.itemspanel

>

<

itemspaneltemplate

>

<

stackpanel

orientation="horizontal"

>

stackpanel

>

itemspaneltemplate

>

itemscontrol.itemspanel

>

<

listbox.itemtemplate

>

<

datatemplate

>

<

grid

>

<

textblock

text=""

tooltipservice.placement="mouse"

tooltipservice.tooltip="}"

/>

grid

>

datatemplate

>

listbox.itemtemplate

>

listbox

>

grid

>

這樣就能夠最終顯示提示資訊了,

現在我需要將提示資訊隨滑鼠的移動而移動,網上有實現的方法,不過我這裡首先要需要解決怎樣獲取datatemplate內的控制項

<

textblock

x:name="mytxt"

mousemove="textblock_mousemove"

fontfamily="arial"

foreground="#333333"

fontsize="18"

text=""

>

<

tooltipservice.tooltip

>

<

tooltip

x:name="tip"

placement="mouse"

>

<

binding

path="lastname"

converter=""

>

binding

>

tooltip

>

tooltipservice.tooltip

>

textblock

>

datatemplate進行了一些改動,那麼我需要先獲取textblock,再獲取其中的tooltip,這個部分參考了園裡這篇文章

,當滑鼠在textblock移動時,就進行下面的處理:

private

void textblock_mousemove(object sender, mouseeventargs e)

else
textblock mytxt = findfirstvisualchild(_selecteditem, "mytxt");
tooltip tip = mytxt.findname("tip") as tooltip;
if (tip != null)
else
}
}
獲取視覺化的**也貼出來:

public t findfirstvisualchild(dependencyobject obj,string childname) where t : dependencyobject
else
}
}
return

null;

}
完成以後,就實現選擇listbox的item時,提示資訊就會跟隨滑鼠的移動而移動了。其實利用上面的方法,也可以動態的改變listboxitem的背景色
_selecteditem.background = new solidcolorbrush(colors.orange);
上面所講用到不少的知識點,希望對你有所幫助,不過上面有個地方我總是無法實現,即如datagrid那樣,將listboxitem的背景色進行交替變換,我模仿msdn上改變 listview 中各行的背景色

進行修改,但是沒能實現,只好以後如果解決了再貼出來,如果有朋友實現過這個功能,也請不吝賜教!

Joggler 使用中遇到的問題

1.挑u盤 使用官方提供的系統起來從u盤讀取 資源的時候發現有的u盤認不出來。後來發現是u盤分割槽的問題。因為這個系統一定要掛接 dev sdx1這個分割槽,所以需要採用hdd格式的優盤,zip的是不認的 2.ubuntu上執行o2的圖形前端不能工作 這幅是使用出廠的mmcblock0p2裡的 op...

Git Gerrit 使用中遇到的問題

1.remote rejected release refs for release no new changes 非常惱人的乙個問題。在網上做了些搜尋後,都說是許可權配置問題。但是,事實上我已經有了onwer與push許可權。當然也可能是版本問題,因為gerrit的版本是2.1.0 最終還是把 p...

mysql使用中遇到的問題

問題一 第一次mysql啟動服務失敗,未返回報錯資訊 解決方法 執行 mysqld console命令,檢視error資訊,對症下藥 但一般情況下,主要是因為mysql目錄下的data資料夾中內容不正確,解決方法有以下兩個 1.在開啟服務前執行初始化命令 mysqld initalize 然後啟動服...