【问题标题】:How can I force a WPF DataGrid to Instantiate the new viewmodel object behind a row?如何强制 WPF DataGrid 在一行后面实例化新的 viewmodel 对象?
【发布时间】:2018-12-21 20:17:47
【问题描述】:

我有一个带有几个单选按钮列和几个文本框列的 WPF DataGrid。

所有列都是 DataGridTemplateColumns,因此我可以自定义字符串显示格式。 (不确定这是否与任何事情有关。)

有两列带有单选按钮,它们应该组合在一起以允许用户选择一个或另一个。

在一行后面的视图模型中,有代码为这对单选按钮生成一个唯一的组名,以便每一行都有自己的一组互斥选项。

问题是,在激活文本框之前,DataGrid 似乎不会实例化行的视图模型。那是触发构造函数的时候。在那之前,没有唯一的组名,因此用户可以选择两个单选按钮。一旦构造函数运行,单选按钮就会正常运行。

有没有办法在 DataGrid 显示新行时强制实例化视图模型?

【问题讨论】:

    标签: wpf wpfdatagrid


    【解决方案1】:

    单选按钮应该有一个可以绑定的命令 - 允许您以编程方式实例化视图模型。您可以将行的数据上下文作为命令的参数发送(这甚至可能强制实例化),然后您可以实例化它并将其添加到 DataGrid 用作 DataSource 的集合中(如果它仍然为空)。

    【讨论】:

    • RadioButton 上已经有一个绑定属性。我不确定绑定另一个(命令)会有所作为。即便如此,如果我将它添加到视图模型中的集合中,数据网格将不会将其识别为“新”行,它会准备另一个新行,并且 UI 将不同步,我认为。
    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 2016-10-27
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 2019-09-19
    • 2012-04-01
    • 1970-01-01
    相关资源
    最近更新 更多