【问题标题】:Programatically add and bind DataGrid column以编程方式添加和绑定 DataGrid 列
【发布时间】:2012-03-14 20:36:12
【问题描述】:

我想以编程方式将一列添加到我的数据网格并绑定它。

我在网上尝试了以下示例,但无法显示数据。

我确实让它与在 xaml.xml 中声明的列一起工作。

这是 datagrid Xaml 声明:

<DataGrid Grid.Row="0" x:Name="dtgMain" AutoGenerateColumns="False" ItemsSource="{Binding}" RowHeight="25" SizeChanged="dtgMain_SizeChanged"></DataGrid>

这里是我为数据网格设置数据上下文的地方:

System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
                doc.LoadXml(response);
                provider.Document = doc;
                provider.XPath = "/moo/response/data/load/panel";
                dtgMain.DataContext = provider;

这里是我添加列的地方:

DataGridTextColumn dc = new DataGridTextColumn();
            dc.Binding = new Binding("panelCode");
            dc.Header = "Job Number";
            dtgMain.Columns.Add(dc);

这里是xml的一个例子:

<moo>
  <response>
    <data>
      <load count="2">true
        <panel index="10">
          <panelCode>100072
          </panelCode>
        </panel>
      </load>
    </data>
  </response>
</moo>

【问题讨论】:

    标签: c# wpf xml data-binding datagrid


    【解决方案1】:

    在我看来,您的列绑定没有使用XPath

    dc.Binding = new Binding() { XPath = "panelCode" };
    

    【讨论】:

    • 就像我说的,当在 xaml 中声明列时,这段代码运行良好。所以我猜测这个问题与我在数据列上声明绑定的方式有关。我刚试过,还是不行。
    • 我假设因为我使用 Xpath 设置我的数据上下文,数据列的绑定将从那时开始在 xml 中开始?那么它会不会像 dc.Binding = new Binding("/moo/response/data/load/panel/panelCode");
    • @user589195:顺便看看debugging data bindngs
    • @user589195:查看我的编辑。每行中的源对象都是一个 XmlElement,如果要绑定 xml,则需要 XPath。
    猜你喜欢
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 2016-06-17
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多