c# - 如何将 xml 绑定(bind)到 wpf TreeView ?

标签 c# xml wpf mvvm treeview

如何将 xml 绑定(bind)到 wpf TreeView ?我正在使用 Prism mvvm 模式。我更喜欢 IList 来保存循环数据。

我试过http://geeklyeverafter.blogspot.com/2010/03/wpf-treeview-bound-to-xml-file.html
http://www.blogs.intuidev.com/post/2009/12/28/xml_to_treeview.aspx
但没有任何效果。

最佳答案

好的。现在这个问题已经很老了,但我认为有一种简单的方法可以将 XML 绑定(bind)到 TreeView。也许它对某人有帮助。
XAML:

<Window.Resources>
        <HierarchicalDataTemplate ItemsSource="{Binding Path=Elements}" x:Key="NodeTemplate">
            <Grid>
                <TextBlock Text="{Binding Path=Name}"/>
            </Grid>
        </HierarchicalDataTemplate>
</Window.Resources>

...
<TreeView x:Name="myTreeView" Grid.Column="0"
      ItemsSource="{Binding Path=Root.Elements}" 
      ItemTemplate="{StaticResource ResourceKey=NodeTemplate}"
      />

在后面的代码中,我只创建了一个 XDocument (System.Xml.linq) 并将其绑定(bind)到 TreeView 的 DataContext。例如像这样:
private XDocument _theXML;
public XDocument TheXML {
    get => _theXML;
    set => _theXML = value;
}
public MainWindow()
{
    ...
    InitializeComponent();
    DataContext = this;
    TheXML = XDocument.Load(@"c:\file.xml");
    myTreeView.DataContext = TheXML;
    myTreeView.UpdateLayout();
}

就是这样。 XML 文件的内容将显示为 TreeView。如果您想查看更多详细信息(属性、...),您可以在 XAML 代码中优化模板。

关于c# - 如何将 xml 绑定(bind)到 wpf TreeView ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868889/

相关文章:

c# - 如何在 Prism 的 "OnNavigatingTo"中为任何和所有类执行操作

c# - 如何在 C# 中存储对属性的引用?

如果在 Element 中设置,WPF 触发器将不会设置属性

c# - 在 WPF 应用程序的属性中设置/返回值

javascript - 努力保持 ViewModel 数据在下拉回发中

python - 使用 ElementTree 在 Python 中解析 XML 的节点值

java - Android:菜单中的圆角

xml - 使用 XSLT 创建组合文档 (@href)

c# - 我可以在呈现控件时将英语数字更改为阿拉伯语/波斯语表示形式吗?

c# - ContentControl 在两个按钮之间切换