【问题标题】:Double list - WPF Toolkit DataGrid双列表 - WPF 工具包 DataGrid
【发布时间】:2011-03-01 08:01:46
【问题描述】:

我有一个来自 wpf Toolkit 的数据网格,其中 itemsource 绑定到 Observable<Item>。在Item 类中,我有另一个Observable<bool> 列表,其中包含要显示的值。

我想在自定义模板中显示这些值。如果可能的话,我也想显示其他行(它们是正常的属性)。

我该如何执行此操作?谢谢你的回答。

更新(为了清楚起见):第二个列表应该显示在普通列中,而不是作为主/详细信息。想象第二个列表将包含 2 个bools,并且 Item 类包含 1 个额外的属性。在这种情况下,应该显示 3 列。

【问题讨论】:

  • 你能详细说明你想展示什么吗?您是否想根据 Observable 中的值创建行,例如 row1 显示 Item 和后续行以在其列中显示 Observable 值?或者您想在 UI 中为 Observable 属性创建列表模板?
  • 我刚刚更新了问题,见上文。

标签: c# wpf datagrid wpftoolkit


【解决方案1】:

您可以创建第二个数据网格并将SelectedItem.Items 从第一个网格绑定到第二个网格。或者您可以在数据网格的行详细信息中包含第二个数据网格,如下所示:

<DataGrid.RowDetailsTemplate>
    <DataTemplate>
        <DataGrid ItemsSource="{Binding Items}"/>
    </DataTemplate>
</DataGrid.RowDetailsTemplate>

看看this examplesthis

【讨论】:

  • 嗨,谢尔盖,感谢您的回答。但是,第二个列表应该显示在普通列中,而不是作为主/详细信息。想象第二个列表将包含 2 个bools,并且 Item 类包含 1 个额外的属性。在这种情况下,应该显示 3 列。
  • 在这种情况下,我认为您只能创建行详细信息,或者创建一个将在运行时创建其他列的函数。使用模板来制作可变列数是不可能的,但您可以尝试创建自定义列模板
  • 此链接:stackoverflow.com/questions/320089/… 可以帮助您
  • 也许这就是你想要的:brianlagunas.com/index.php/2010/03/08/…
  • 我希望有更好的 (xaml) 方法来实现这一点......也许其他人有建议?
【解决方案2】:

您可以将附加属性写入数据网格,这将为您在网格上创建额外的列。该属性实现者将定义与各个 Observable 值的绑定。

【讨论】:

  • 听起来不错,但您能否更详细地指定它或创建一个小示例?由于我已经尝试过某种这种解决方案,但我没有成功......
  • 1> 为网格创建 AttachedProperty,它将是您的 ColumnType 的集合类型(这必须是唯一的类)。 2> 定义属性更改事件处理程序。 3> 在事件处理程序中,找到列表中的值。为列表创建 DataGridColumns。在列上定义绑定并将它们添加到数据网格列集合中。
  • 谢谢。我会尝试一下,稍后再回复您。
  • 嗨 Rakesh,我想知道在哪里设置绑定。如果我在网格上设置它,我没有正确的绑定,因为值的集合在 ItemCollection 中。你能帮帮我吗?
  • 嗨 Rakesh Gunijan,你能帮我看看在哪里设置绑定吗?谢谢
猜你喜欢
  • 1970-01-01
  • 2010-12-01
  • 2011-02-20
  • 2013-04-08
  • 2010-12-19
  • 1970-01-01
  • 1970-01-01
  • 2010-10-13
  • 2010-12-17
相关资源
最近更新 更多