2012-08-24 44 views
4

我想更改ListView项目上的默认选择模板。默认情况下,一个3像素宽的灰色边框应用于当前选定的项目(S):在WinJS中更改ListView选择模板

enter image description here

我确实发现在ui.js是内部的_selectionTemplate属性被设置为默认的边框:

var selectionBorder = createNodeWithClass(WinJS.UI._selectionBorderContainerClass); 
selectionBorder.appendChild(createNodeWithClass(WinJS.UI._selectionBorderClass + " " + WinJS.UI._selectionBorderTopClass)); 
selectionBorder.appendChild(createNodeWithClass(WinJS.UI._selectionBorderClass + " " + WinJS.UI._selectionBorderRightClass)); 
selectionBorder.appendChild(createNodeWithClass(WinJS.UI._selectionBorderClass + " " + WinJS.UI._selectionBorderBottomClass)); 
selectionBorder.appendChild(createNodeWithClass(WinJS.UI._selectionBorderClass + " " + WinJS.UI._selectionBorderLeftClass)); 

this._selectionTemplate = []; 
this._selectionTemplate.push(createNodeWithClass(WinJS.UI._selectionBackgroundClass)); 
this._selectionTemplate.push(selectionBorder); 
this._selectionTemplate.push(createNodeWithClass(WinJS.UI._selectionCheckmarkBackgroundClass)); 
var checkmark = createNodeWithClass(WinJS.UI._selectionCheckmarkClass); 
checkmark.innerText = WinJS.UI._SELECTION_CHECKMARK; 
this._selectionTemplate.push(checkmark); 

但是,因为_selectionTemplate是私人的,它似乎违背ListView设计来修改_selectionTemplate属性本身。有没有更好的解决方法来修改这个默认选择模板?

+2

它的CSS类是它添加的,您需要重写;然后你可以添加你自己的CSS类来设置你想要设置的宽度。 –

回答

8

覆盖默认模板使用的CSS类。例如,这会将边框更改为红色:

.win-listview .win-container:hover{ 
    outline: rgba(255, 0, 0, 0.3) solid 3px; 
} 
+0

希望我可以多次投票答复! –