0

我遇到了问题,无论在 stackoverflow 和互联网的其他部分上冲浪多少次,我似乎都无法得到正确的答案。我有一个绑定到 a 的树视图,List<Category>我的Category类如下;

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在TreeView对象中绑定了绑定,并且在更改选择时,我能够提醒消息框。我想IValue进行选择并将其传递给另一个函数来做某事。我已经查看了 SelectedItem 但似乎无法找到访问底层数据源的方法。

有小费吗?谢谢。

4

1 回答 1

1

你有没有试过这个:

void HandleSelected(object sender, RoutedEventArgs e)
    {
        var tvi = e.Source as TreeViewItem;
        var category = tvi.DataContext as Category;
        ...
    }
于 2013-11-03T10:48:12.157 回答