【发布时间】:2012-04-01 02:16:33
【问题描述】:
我有这个任务,其中数据网格允许选择多行。当单行是选择时,其样式是在该行周围显示1px边框。现在选择多个行时,它应该显示为单个块的所有行的1PM蓝色边框。所以它就像一个围绕所有选定行的框。并非每一行都有自己的边框。我该如何设计这个?
【问题讨论】:
-
这会很困难..(特别是如果你不知道从哪里开始)
标签: wpf wpf-controls wpfdatagrid
我有这个任务,其中数据网格允许选择多行。当单行是选择时,其样式是在该行周围显示1px边框。现在选择多个行时,它应该显示为单个块的所有行的1PM蓝色边框。所以它就像一个围绕所有选定行的框。并非每一行都有自己的边框。我该如何设计这个?
【问题讨论】:
标签: wpf wpf-controls wpfdatagrid
我以前做过类似的事情。您可以为此目的使用 DataGrid.ItemContainerStyle。 您可以为 DataGridRow(项目容器的类型)study this blog on how to do that 设置 ControlTemplate 属性的样式。在模板中,您应该包含一个新的边框。
DataGridRow 的 IsSelected 属性应该绑定到模型的某个属性(行的数据),该属性可以通知视图模型或您用来收集所选行的任何服务。 ControlTemplate 中包含的 Border 应将其 StrokeThickness 绑定到相同的视图模型或服务。然后,您可以在该绑定上使用转换器,该绑定使用视图模型或服务来确定该特定行的边框的哪一侧应该是粗的。
这项任务并不容易,但可能。您可能会面临一些架构挑战。为了避免混乱,我会使用 MVVM、DI 和其他模式。
希望对你有帮助。
【讨论】: