2014-11-01 4 views
0

현재 제가 작업하고있는 프로젝트는 wpf이고 저는 wpf에서 최신입니다. 내 프로젝트에서 트리보기를 검색하고 일치가 발생하면 해당 요소를 강조 표시해야합니다. 나는 이처럼 일했고 노드의 뒷 배경색을 설정하지 못했습니다. wpf에서 뒤쪽의 배경색을 코드 뒤에서 설정하십시오.


foreach (object item in treeView1.Items) 
{ 
    cls.Node n=(cls.Node)item; 
    n.IsSelected = true;    
} 

사람이 나를 도울 수있다. 위의 코드는 샘플 코드입니다.

답변

1

배경을 설정하려면 래퍼 TreeViewItem을 가져야합니다. TreeView 때문에 ItemsPanelTemplate에 VirtualizingStackPanel를 사용하지 않는, 그래서 우리는 안전하게 일부 항목에서 TreeViewItem 얻을 수있는 ItemContainerGenerator를 사용할 수 있습니다 원래의 코드 (위 주석이) 당신의 시도인지 아닌지 잘 모르겠어요

foreach (object item in treeView1.Items) { 
    //cls.Node n=(cls.Node)item; 
    //n.IsSelected = true;    
    var tvItem = treeView1.ItemContainerGenerator.ContainerFromItem(item) 
       as TreeViewItem; 
    if(tvItem != null) tvItem.Background = Brushes.Blue;//just an example 
} 

을 , 원한다면 주석을 제거하십시오 (cls.Node이 실제로 사용자 정의 클래스 임).

+0

나는 이미 시도했지만 null로 tvitem을 얻고있다. – Sivajith

+0

@Sivajith 당신의 창 ***이 이미로드되었을 때 코드가 실행되어야한다는 것을 잊어 버렸습니다. ***. 따라서 Loaded 이벤트 핸들러에 배치하거나 코드를 실행하기 전에 윈도우가 여전히 보이는지 확인하십시오. –

+0

당신은 환영합니다 :) –