Elements和FirstAttribute绑定正如我所期望的那样(如果我不知道它是一个方法),但Attributes不是,尽管是XElement的成员,就像其他人一样。我知道IValueConverter,我正在使用它来获取我想要的属性绑定,但我很好奇为什么它适用于Elements。
<Window x:Class="WpfApplication6.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel>
<TextBlock Text="{Binding Path=FirstAttribute}" />
<ListBox ItemsSource="{Binding Path=Elements}" />
<ListBox ItemsSource="{Binding Path=Attributes}" />
</StackPanel>
</Window>
using System.Linq;
using System.Windows;
using System.Xml.Linq;
namespace WpfApplication6 {
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window {
public Window1() {
InitializeComponent();
XDocument doc = new XDocument(
new XElement("Parent",
new XAttribute("attr1", "val"),
new XAttribute("attr2", "val"),
new XElement("Child1"),
new XElement("Child2")
)
);
MessageBox.Show("Elements: " + doc.Elements().First().Elements().Count());
MessageBox.Show("Attributes: " + doc.Elements().First().Attributes().Count());
DataContext = doc.Elements().First();
}
}
}
答案 0 :(得分:0)
你确定Elements有效吗?因为据我所知,你不能直接绑定到方法。元素和属性都是方法,为了解决这个问题,请参阅this question。
答案 1 :(得分:0)
在MSDN上得到答案:
http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/4be39d21-c9d8-4781-9337-2cb1215ec3d1/
基本上,XAML团队专门为XLinq添加了PropertyDescriptors以进行绑定,但必须忘记属性......