Как привязать данные из тега xml к полю со списком в xamdatagrid или datagrid в wpf?

xml-файл.

<Products>
   <ProductTemplate>
       <ProductID> 1</ProductID>
       <ProductLot>11</ProductLot>
       <Product>product1</product>
       <Product>product1</product>
<ProductTemplate>
<Products>
 .....
  ....

Я могу получить "productID" и "productLot" в xamdatagrid. Теперь я должен добавить «Продукт» в xamdatagrid в виде поля со списком. Ниже приведен код в файле xaml.

                    <igDP:UnboundField Name="Product" Label="Product Name">
                        <igDP:UnboundField.Settings>
                            <igDP:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}" AllowEdit="True">
                                <igDP:FieldSettings.EditorStyle>
                                    <Style TargetType="{x:Type igEditors:XamComboEditor}">
                                        <EventSetter Event="Loaded" Handler="Combo_Loaded"/>
                                        <Setter Property="ItemsSource" Value="{Binding Items}" />

                                    </Style>
                                </igDP:FieldSettings.EditorStyle>
                            </igDP:FieldSettings>
                        </igDP:UnboundField.Settings>
                    </igDP:UnboundField>
                </igDP:FieldLayout.Fields>
            </igDP:FieldLayout>
        </igDP:XamDataGrid.FieldLayouts>
    </igDP:XamDataGrid>
</Grid>

Теперь проблема заключается в том, что значения «Продукт» не заполняются в поле со списком.

ниже приведен класс viewmodel функции display()

public void display(XamDataGrid dataGridView1)
        {


            XmlReader xmlFile;
            xmlFile = XmlReader.Create("C:/Wafers/WaferGen.xml", new XmlReaderSettings());
            DataSet ds = new DataSet();
            ds.ReadXml(xmlFile);
            dataGridView1.DataContext = ds.Tables[0]; 
}

Я хотел бы знать, как получить значения в «продукте» из файла xml, а затем как привязаться к полю со списком внутри xamdatagrid?


person meshsf    schedule 21.09.2016    source источник


Ответы (1)


XML имеет неправильный формат. Ниже показано, как получить список продуктов из XML, а затем вы можете привязать его к нужному элементу управления, в вашем случае combobox

string productXML = @"<Products>
                        <ProductTemplate>
                          <ProductID> 1</ProductID>
                          <ProductLot>11</ProductLot>
                          <Product>product1</Product>
                          <Product>product1</Product>
                        </ProductTemplate>
                     </Products>";

XDocument xdoc = XDocument.Parse(productXML);
//This will give you the list of Products which you can bind with your control
var listOfProducts = xdoc.Descendants("Products").Elements("ProductTemplate").Descendants().Where(x => x.Name == "Product").Select(x => x.Value).ToList();
person Richa Garg    schedule 21.09.2016
comment
Спасибо за ответ и ваше время, Рича Гарг. Решение не работает в моем коде. Я беру данные из файла product.xml. Поэтому я попытался использовать XDocument xdoc = XDocument.Load(C:/Products/Product.xml) — это не работает. Я также пробовал с вашим фрагментом кода. Не повезло. Данные не заполняются в поле со списком в xamdatagrid. Я не уверен, правильно ли мое заявление о привязке или нет. - person meshsf; 21.09.2016
comment
Можете ли вы попробовать привязать поле со списком из сетки данных, просто чтобы проверить, есть ли какая-то проблема с привязкой. Поскольку мой код работает на моей машине - person Richa Garg; 21.09.2016
comment
Поле со списком заполняется в xamdatagrid, но список пуст. Не получается разобраться.. - person meshsf; 21.09.2016
comment
Рича Гарг, теперь ваше решение работает нормально. Я смог понять это в своем коде. Спасибо за ваше драгоценное время и помощь. - person meshsf; 22.09.2016