【问题标题】:wpf datagrid dynamic bound columnswpf datagrid 动态绑定列
【发布时间】:2011-04-18 14:14:12
【问题描述】:

假设有以下类(出于示例目的):

public class Item
{
    public String Key {get;set;}
    public String[] Values { get; set;}
}

为了简单起见,假设每个“Item”的“Values”数组的长度是相同的。 让我们收集这些“项目”:

示例A:

List<Item> items = new List<Items>(
    new Item() { Key = "A", Values = new String[]{"OneA", null, "ThreeA"}},
    new Item() { Key = "B", Values = new String[]{"OneB", "TwoB", null}},
    new Item() { Key = "C", Values = new String[]{null, null, "ThreeC"}}
);

示例B:

List<Item> items = new List<Items>(
    new Item() { Key = "1", Values = new String[]{"One1", null}},
    new Item() { Key = "2", Values = new String[]{"One2", "Two2"}},
    new Item() { Key = "3", Values = new String[]{null, null}}
);

那么在接下来的情况下,我如何从具有以下列的 ToolKit 中创建 DataGrid

示例A:

 A | OneA | ____ | ThreeA |

 B | OneB | TwoB | ______ |

 C | ____ | ____ | ThreeC |

示例B:

 1 | OneA | ____ |

 2 | OneB | TwoB |

 3 | ____ | ____ |

因此,换句话说:在不同的情况下,Values 数组具有不同的长度。但在一种情况下,所有 Values 数组的长度都相同(为简化起见)。

如果DataGridInstance.ItemsSource 绑定到项目(NotifyPropertyChanged 已实现),列将如何设置以及列值的绑定将如何设置?

当然,每次刷新时都会说DataGridInstance.Columns.Clear()。 与再次添加列相比,它们的数量是众所周知的(当然取决于“Values”数组的长度)。

但是我将如何创建值的绑定?

我想要以下内容:

Binding columnABinding = new Binding("Values[0]");
Binding columnBBinding = new Binding("Values[1]");
Binding columnCBinding = new Binding("Values[3]");

呃,对不起我的英语不好。我尽量保持简单,希望它是可以理解的! 提前感谢您的回答!

【问题讨论】:

    标签: wpf datagrid binding


    【解决方案1】:

    最近有人问过similar question,根据我在那边的回答,我怀疑您是否可以绑定列本身。要刷新列,您可以订阅其中一项的PropertyChanged 事件,如果数组的长度发生变化,您可以重建列。如果 DataContext 发生变化并且新项目以这种方式出现,您可能还需要处理 DataContextChanged 事件以进行刷新。

    【讨论】:

      猜你喜欢
      • 2014-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-23
      • 1970-01-01
      • 2017-10-13
      • 1970-01-01
      • 2011-03-05
      相关资源
      最近更新 更多