ElementとFirstAttributeは私が期待していたとおりバインドしますが(メソッドがわからない場合)、XElementのメンバーであるにもかかわらず、Attributesは他のメンバーと同じようにバインドされません。私はIValueConverterについて知っていますが、私は属性で必要なバインディングを得るためにそれを使用していますが、なぜそれがElements上で動作するのか不思議です。このシナリオでパスの1つがバインドされないのはなぜですか?
<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();
}
}
}
...属性を忘れている必要があります私が考えたものだ。つまり、あまりにも要素に直接バインドすることは実際には機能します。 属性のIValueConverterを使用しました。 – lesscode