我有一个项目与XmlDataProvider绑定到WPF DataGrid控件.我在DataGrid上的绑定设置如下:
<dg:DataGrid ItemsSource="{Binding Source={StaticResource XmlData}, XPath=Root/People/Person}"
AutoGenerateColumns="False">
<dg:DataGrid.Columns>
<dg:DataGridTextColumn Header="ID" Binding="{Binding XPath=ID}"/>
<dg:DataGridTextColumn Header="Name" Binding="{Binding XPath=Name}"/>
</dg:DataGrid.Columns>
</dg:DataGrid>
Run Code Online (Sandbox Code Playgroud)
用户可以使用DataGrid编辑条目而不会出现任何问题.我无法实现的是允许用户使用DataGrid添加新行(即新Person).我怎么能允许这个?
假设我有一个UserControl,其DataContext被设置到具有对象XmlDataProvider属性.我想在我的控件的XAML中绑定到这个属性,并指定一些XPath.我试过这个:
<TreeView ItemsSource="{Binding Path=PropertyName, XPath=/items/item/*}">
Run Code Online (Sandbox Code Playgroud)
在运行时,我得到异常"BindingExpression with XPath无法绑定到非XML对象".删除Path属性并将TreeView'DataContext设置为XmlPropertyName直接工作正常.
是什么赋予了?是Path和XPath相互排斥?
我创建了一个应用程序,它根据xml文件中的值绘制组织树.
xaml文件是这样的:
<Window.Resources>
<!-- The Org Chart Data-->
<XmlDataProvider x:Key="organization" Source="model.xml" />
<SolidColorBrush x:Key="ListBorder" Color="#FF7F9DB9"/>
<!-- The Style for Nodes -->
<Style TargetType="{x:Type draw:Node}">
<Setter Property="OverridesDefaultStyle" Value="true"/>
<Setter Property="Template">
---------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我希望能够通过从openfiledialog中选择一个xml文件(如按钮点击)在运行时更改源代码,我该怎么做?