我觉得我失去了一些东西在WPF数据绑定的基本位置:如何调试一个XDocument绑定到一个WPF的ListView
我有这个XML文件:
<?xml version="1.0" encoding="utf-8" ?>
<WindowList>
<Window Height="10" Width="10" ALL_MODEL_MODEL="xyz0" ALL_MODEL_MANUFACTURER="leidi"/>
<Window Height="20" Width="20" ALL_MODEL_MODEL="xyz1" ALL_MODEL_MANUFACTURER="goffin"/>
<Window Height="30" Width="30" ALL_MODEL_MODEL="xyz2" ALL_MODEL_MANUFACTURER="schlueter"/>
<Window Height="40" Width="40" ALL_MODEL_MODEL="xyz3" ALL_MODEL_MANUFACTURER="rossi"/>
</WindowList>
而这个XAML文件:
<Window x:Class="BindListToXDocument.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<StackPanel>
<ListView Name="lstWindows">
<ListView.View>
<GridView>
<GridViewColumn Header="Height"
DisplayMemberBinding="{Binding Path=Attribute[Height].Value}"/>
<GridViewColumn Header="Width"
DisplayMemberBinding="{Binding Path=Attribute[Width].Value}"/>
<GridViewColumn Header="Model"
DisplayMemberBinding="{Binding Path=Attribute[Model].Value}"/>
<GridViewColumn Header="Manufacturer"
DisplayMemberBinding="{Binding Path=Attribute[Manufacturer].Value}"/>
</GridView>
</ListView.View>
</ListView>
<Button Click="Button_Click">Populate List</Button>
</StackPanel>
</Window>
绑定表达式建立在msdn上的此文档之后:How to: Bind to XDocument, XElement, or LINQ for XML Query Results。
然后我用下面的代码来设置DataContext
:
private void Button_Click(object sender, RoutedEventArgs e)
{
var doc = XDocument.Load("WindowList.xml");
var windows = doc.Root.Elements();
lstWindows.DataContext = windows;
}
代码运行没有任何抱怨,当我按一下按钮,但列表中的项目从未露面。我无法弄清楚如何去调试这个。你有没有任何指针用于调试绑定表达式,或者如何特别绑定XDocument
?
编辑: OK,看来我错过了我的XAML关键的东西:
<ListView Name="lstWindows" ItemsSource="{Binding}"> <!-- specify the ItemsSource! -->
我会离开这里了这个问题,因为它是绑定到XDocument
,我的东西小例子发现问题很困难 - 大多数例子已经更进一步。不过,我仍然对调试技巧感兴趣。
使用'output window'查找可能的绑定错误 – 2011-05-24 10:27:17
@Haris Hasan:好点。 '输出窗口'没有提到任何绑定错误,但... – 2011-05-24 10:40:23