2013-11-02 2 views
0

나는 서핑 stackoverflow와 인터넷의 다른 부분이 얼마나 정당한 대답을 얻지 못해도 문제가 있습니다. 나는 List<Category>에 바인딩 된 treeview를 가지고 있고 내 Category 클래스는 아래와 같다.treeviewitem의 데이터 바인딩 된 트리 뷰에서 클래스 속성 가져 오기

public class Category 
{ 
    public string Name { get; set; } 
    public dynamic SearchEngine { get; set; } 
} 

public class SearchEngine 
{ 
    public virtual string IKey { get; set; } 
    public virtual string IValue { get; set; } 
    public virtual string icon { get; set; } 
} 

이제 TreeView는 다음과 같이 보이는 맞춤 템플릿을 사용하고 있습니다.

<TreeView.ItemTemplate> 
    <HierarchicalDataTemplate ItemsSource="{Binding Path=ItemList}" ItemTemplate="{StaticResource ResourceKey=childrenDataTemplate}"> 
     <Border BorderThickness="0" Margin="5"> 
      <TextBlock Text="{Binding Path=Name}" /> 
     </Border> 
     <HierarchicalDataTemplate.ItemContainerStyle> 
      <Style TargetType="TreeViewItem" BasedOn="{StaticResource TreeViewItem}"> 
       <Setter Property="FontWeight" Value="Normal"/> 
       <Setter Property="Focusable" Value="True"/> 
      </Style> 
     </HierarchicalDataTemplate.ItemContainerStyle> 
    </HierarchicalDataTemplate> 
</TreeView.ItemTemplate> 

<TreeView.ItemContainerStyle> 
    <Style TargetType="TreeViewItem" BasedOn="{StaticResource TreeViewItem}"> 
     <Setter Property="FontWeight" Value="Bold"/> 
     <Setter Property="Focusable" Value="False"/> 
    </Style> 
</TreeView.ItemContainerStyle> 

당신은 내 트 리뷰 개체에 바인딩 TreeViewItemSelected있어, 나는 선택이 때 메시지 박스 경고를 할 수있어 볼 수 있듯이 변경되었습니다. 선택시 IValue을 받고 다른 기능으로 전달하여 무언가를하고 싶습니다. SelectedItem을 살펴 봤지만 기본 데이터 소스에 접근 할 방법을 찾지 못하는 것 같습니다.

팁이 있습니까? 감사.

void HandleSelected(object sender, RoutedEventArgs e) 
    { 
     var tvi = e.Source as TreeViewItem; 
     var category = tvi.DataContext as Category; 
     ... 
    } 
+1

무엇'casting'에 대한 : –

+0

@KingKing 예, 일을 밝혀졌다, 고마워. – rickibalboa

답변

1

당신이 시도 했습니까? 기본 항목 데이터 유형을 아는 경우 해당 유형으로 캐스팅하십시오.
+0

대신 'e.OriginalSource'를 대신 사용해야했지만, 대답으로 받아 들여서 고마워했습니다. – rickibalboa

관련 문제