Я пытаюсь заполнить datagrid, который находится внутри usercontrol, используя данные из XElement. Datagrid строит строки, но внутри них нет значений. Я получаю System.Windows.Data Error: 40 : BindingExpression path error: 'Value' property not found on 'object'
, показывая в окне вывода. Не уверен, что я делаю неправильно, я видел несколько примеров, используя этот подход. Я думаю, что это может иметь какое-то отношение к местоположению datagrid, которое находится внутри usercontrol, но не уверен.Заполнение WPat datagrid с помощью XElement
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;
}
Вы должны использовать индекс с элементом. как: - Элементы [ставка] [1] .Value. –