我想使用來自XElement的數據填充位於usercontrol內的數據網格。 datagrid構建行,但其中沒有值顯示。我在輸出窗口中顯示System.Windows.Data Error: 40 : BindingExpression path error: 'Value' property not found on 'object'
。不知道我做錯了什麼,我看過幾個使用這種方法的例子。我認爲它可能與datagrid的位置有關,該位置位於usercontrol內,但不確定。使用XElement填充WPF數據網格
的的XElement:
<root>
<option symbol="AAPL131221P00700000" type="P">
<strikePrice>700</strikePrice>
<lastPrice>179.53</lastPrice>
<change>0</change>
<changeDir />
<bid>NaN</bid>
<ask>NaN</ask>
<vol>30</vol>
<openInt>60</openInt>
</option>
</root>
XAML:
<UserControl x:Class="OptionWPF.DataPane"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="3*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<DataGrid AutoGenerateColumns="False"
Grid.Row="0"
RowHeaderWidth="0"
AlternationCount="2"
x:Name="DGrid"
ItemsSource="{Binding Path=Elements[option]}">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Path = Elements[bid].Value}"
Header="Bid" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Path=Elements[ask].Value}"
Header="Ask" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
<Button x:Name="button2" Grid.Row="1" Click="button_Click"/>
</Grid>
</UserControl>
CS:
private void button_Click(object sender, RoutedEventArgs e)
{
XElement xdoc = new XElement("root");
YahooData data = new YahooData("AAPL");
IEnumerable<XElement> doc = data.Document;
xdoc.Add(doc);
DGrid.DataContext = xdoc;
}
你應該元素中使用索引。如: - Elements [bid] [1] .Value。 –