|
|
1
7
您可以通过修改模板来访问DataGrid的内部ScrollViewer。尽管通常不会将事件处理程序放在模板中的代码后面,但如果以内联方式声明模板,则可以像将其附加到DataGrid本身时那样处理事件处理程序。这是从Blend生成的默认模板,包括在ScrollViewer上为RequestBringintoView事件添加的处理程序:
|
|
|
2
27
定义一个
XAML
处理程序
|
|
|
3
9
我花了更多的时间来研究这个问题,因为我的第一个解决方案不起作用。 然而,约翰的回答几乎是好的。诀窍是在RequestBringInToView事件到达ScrollViewer之前捕获它,以便标记它已处理过的事件。 如果不需要优化整个模板,可以使用以下代码:
我们使用ScrollContentPresenter,因为它刚好位于可视化树中ScrollViewer的下方。 希望这有帮助! |
|
|
4
4
我也有同样的问题,简的回答帮助了我。唯一缺少的是ScrollContentPresenter只能在发生已加载事件后找到。我创建了一个从DataGrid继承的扩展的DataGrid类,它具有附加的AutoScroll属性来控制网格是否自动滚动。 这是课程:
以下是您如何使用它:
|
|
|
5
3
我和鲁米特有同样的问题,但找到了解决办法。 我想如果我能找到区分鼠标点击和箭头键的方法,那么我就可以相应地设置e.handled。 经过一些实验,我发现e.originalsource根据鼠标或箭头键而改变。对于鼠标单击,将调用一次RequestBringintoView的处理程序,E.OriginalSource的类型为DataGridCell。对于箭头键,处理程序被调用两次,E.OriginalSource的类型是DataGridRow,然后是DataGridCell。 我的处理程序的代码是:
这看起来有点像黑客,但对我很有用。 |
|
|
6
1
我不确定这是否有效,但这里有一个基于一些调查的想法,是在使用reflector的数据报源代码中进行的: 1/创建继承DataGridCellsPanel的类。这是数据报内部用于排列单元格的面板。 2/用空方法重写BringIndexIntoView方法(不调用基方法) 3/在XAML中设置itemspanelTemplate属性:
似乎在发生mousedown事件时,有时会调用面板的bringIndexIntoView方法来执行自动滚动。用一个“不行动”代替它可能会起作用。 我没时间测试这个解决方案,请告诉我们它是否有效。 |
|
|
7
0
以下是我的工作(在尝试了迄今为止所有不太复杂的“答案”之后):
scrollViewer.canContentScroll=“false”似乎令人难以置信地违反直觉… |
|
|
8
0
L33 T方式:
注意这个 能够 干扰第三方控制。 |
|
|
Jackimedes · 如何过滤数据网格中的记录? 8 年前 |
|
|
user7580204 · 具有不同值的重复列 8 年前 |
|
|
Hussain · 将附加列与数据网格WPF中的任何控件绑定 10 年前 |
|
|
NorCode · 如何将DataGrid转换为dataTable 12 年前 |
|
|
Hank · 在DataGrid WPF XAML中的数据之间导航 12 年前 |
|
|
Rob · 对多种类型重复使用数据模板? 12 年前 |
|
|
TMan · 如果正在使用另一个单元格,请禁用DataGridCell 13 年前 |