나는 서핑 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;
...
}
무엇'casting'에 대한 : –
@KingKing 예, 일을 밝혀졌다, 고마워. – rickibalboa