【发布时间】:2013-09-03 15:06:44
【问题描述】:
我有一个包含数据网格的 WPF 应用程序。它绑定到我的 List 对象“Orders”,如下所示。
public class OrderBlock
{
public Settings setting;
public List<Order> orders;
}
public class Order
{
public int Amount;
public string OrderID;
public string OrderIDDup;
public string Name;
public string NameDup;
public bool DupIDs;
// and some string, int fields
}
由于我无法控制的原因,可能有多个 OrderID,因此 OrderIDDup 属性。默认情况下,我的数据网格仅显示 OrderID 而不是 OrderIDDup。
我想做的是让用户能够单击单元格 ID 并加载另一个窗口以向他们显示另一个 ID 以及两个名称,并让他们选择应该使用哪个 ID。
我读到 WPF DataGrid 不支持双击单元格的功能。所以我有点迷茫,因为我应该如何开始处理这个问题。我可以看到的另一个问题是,当我尝试(作为有效词)使用 MVVM 设计时,如何将这种事件暴露给我的视图模型?
这也是显示此类信息的最佳方式。
任何帮助都会很棒, 谢谢, M
【问题讨论】:
-
右键点击怎么样?或使用带有计时器和计数器的普通 clickevent ala
if (cell = oldcell && time < maxtime && count ==2) dostuff -
RowDetails可能是另一种实现方式 -
我同意@jim Rowdetails 是要走的路。然后,您可以使用下拉菜单、按钮或任何您想要的值来选择值。您使用的是什么 mvvm 框架。 Mvvm-Light 有一个事件命令,您可以使用它来将 UI 相关事件绑定到视图模型函数并保留 MVVM 模式。
-
wpf 数据网格是否有右键单击事件?当您说 RowDetails 时,您的意思是我可以获取用户单击的行并从中检测到他们单击的列?
-
使用
RowDetailsTemplate会使每一行都像一个扩展器一样,并在单击该行时展开更多信息。您可以将两个Textblocks 放入模板中以保存您的附加信息。在 SO 或谷歌搜索上有很多关于此的信息。