0

I have DataGrid on TabItem, identified in XAML file.

<TabItem Header="Новая вкладка">
      <TabItem.DataContext>
            <XmlDataProvider x:Name="XMLData" Source="/database/stroyka1.bas" XPath="JobArray/job"/>
      </TabItem.DataContext>
            <DataGrid 
             Name="JobsDataGrid" 
             ItemsSource="{Binding}"
             AutoGenerateColumns="false" Height="Auto" Width="Auto"
             IsReadOnly="False" CanUserAddRows="True">
                  <DataGrid.Columns>
                      <DataGridTextColumn Header="ID" Binding="{Binding XPath=id, Mode=TwoWay}" />
                      <DataGridTextColumn Header="Название" Binding="{Binding XPath=name, Mode=TwoWay}" />
                      <DataGridTextColumn Header="Цена за единицу" Binding="{Binding XPath=price, Mode=TwoWay}"/>
                       <DataGridTextColumn Header="Единица измерения" Binding="{Binding XPath=measure, Mode=TwoWay}"/>
                        </DataGrid.Columns>
             </DataGrid>
      </TabItem>    

This works perfectly, and i find method to add new rows in this DataGrid. But i need in more tabs with DataGrids simultaneously. I tried to create new DataGrid in new TabItem, but i saw empty rows. My code:

private void OpenBaseMenuItem_OnClick(object sender, RoutedEventArgs e)
    {
        var curTabOpFDial = new OpenFileDialog();  //open new XML-file
        curTabOpFDial.ShowDialog();
        var tempTabItem = new TabItem();       //create new TabItem in TabControl
        tempTabItem.Header = curTabOpFDial.SafeFileName;        //rename name of Tab

        var curTabDG = new DataGrid();       //create new DataGrid

        var curTabXmlDP = new XmlDataProvider();   //new XMLDataProvider

        var curTabUri = new Uri(curTabOpFDial.FileName); //edit xmldataprovider properties
        curTabXmlDP.Source = curTabUri;
        curTabXmlDP.XPath = "JobArray/job";

        tempTabItem.DataContext = curTabXmlDP;    //create new link with TabItem and XMLDataProvider

        DataGridTextColumn curTabDGTC = new DataGridTextColumn();   //creating 1 column for example
        curTabDGTC.Header = "ID";
        curTabDGTC.Binding = new Binding(){Source = curTabXmlDP, XPath = "id", Mode=BindingMode.TwoWay}; 

        curTabDG.Columns.Add(curTabDGTC);
        tempTabItem.Content = curTabDG;
        GeneralTabControl.Items.Add(tempTabItem);


    }

As you can see - i tried to just move all of the XAML, but it don't works :(

Community
  • 1
  • 1
Vasiliy Terkin
  • 165
  • 2
  • 15
  • sounds to me at first glance as well as reading what you were describing, to be a `BINDING` Issue – MethodMan Feb 11 '15 at 19:22
  • *Everytime I see/hear anyone talking about WPF UIs and using the word "dynamic", I immediately recognize they're doing everything wrong.* Delete all that horrendous code and use proper DataBinding and an ItemsControl for whatever you're trying to do. – Federico Berasategui Feb 11 '15 at 19:37

0 Answers0