将 DataTemplate 设置为 Xml 绑定中的属性
我需要构建一个表单来编辑 XML 节点属性。 不幸的是我不知道属性的数量和名称。
假设我想编辑第一个节点 MYNODE 的属性:
<MYROOT>
<MYPARENTNODE1 Name = MyName1>
<MYNODE Attr1 = Val1 Attr2 = Val2 ... Attr_N = Val_N />
</MYPARENTNODE1>
<MYPARENTNODE2 Name = MyName2>
<MYNODE Attr1 = Val1 Attr2 = Val2 ... Attr_M = Val_M />
</MYPARENTNODE2>
</MYROOT>
首先,我选择节点属性:
<XmlDataProvider
x:Key="dataprovider" Source="myfile.xml"
XPath="/MYROOT/MYPARENTNODE[@Name='MyName1']/MYNODE/@*"
/>
现在,如果我将其绑定到列表框,我将获得所有属性值作为列表项。我需要的是对它们应用一个数据模板,以便我可以为每个属性设置 LABEL-EDITCONTROL 组合,以便对其进行编辑。
比如:
<DataTemplate DataType="{ ??? }">
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Name}" />
<TextBox Text="{Binding Value}" />
</StackPanel>
</DataTemplate>
真的,我在微软或谷歌上都找不到任何有用的例子!
感谢您的帮助, 西蒙娜
I need to build a form to edit XML node attributes.
Unfortunately I don't know the number and the names of the attributes.
Suppose I wanto to edit the attributes of the first node MYNODE:
<MYROOT>
<MYPARENTNODE1 Name = MyName1>
<MYNODE Attr1 = Val1 Attr2 = Val2 ... Attr_N = Val_N />
</MYPARENTNODE1>
<MYPARENTNODE2 Name = MyName2>
<MYNODE Attr1 = Val1 Attr2 = Val2 ... Attr_M = Val_M />
</MYPARENTNODE2>
</MYROOT>
First I select the node attributes:
<XmlDataProvider
x:Key="dataprovider" Source="myfile.xml"
XPath="/MYROOT/MYPARENTNODE[@Name='MyName1']/MYNODE/@*"
/>
Now, if I bind this to a listbox, I get all the attribute values as the list items. What I need is to apply a datatemplate to them so that I can have LABEL-EDITCONTROL couple for each attribute in order to edit it.
Something like:
<DataTemplate DataType="{ ??? }">
<StackPanel Orientation="Horizontal">
<Label Content="{Binding Name}" />
<TextBox Text="{Binding Value}" />
</StackPanel>
</DataTemplate>
Really I can't find any useful example both on Microsoft or Google!
Thans for any help,
Simone
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果所有属性都需要相同的 DataTemplate,则无需指定 DataType。
If you need the same DataTemplate for all attributes, it is not necessary to specify DataType.