【发布时间】:2012-10-17 06:25:14
【问题描述】:
我在 WPF 中有一个 ListView,我的问题是如果一个项目部分显示并且我单击项目,列表将自动滚动,因此整个项目将可见。
如何禁用此自动滚动功能?
谢谢
【问题讨论】:
我在 WPF 中有一个 ListView,我的问题是如果一个项目部分显示并且我单击项目,列表将自动滚动,因此整个项目将可见。
如何禁用此自动滚动功能?
谢谢
【问题讨论】:
有同样的问题,我发现了一个问题:)
在 Xaml 中,您使用此 EventSetter 为 ListViewItem 定义样式:
<ListView.ItemContainerStyle>
<Style TargetType="{x:Type ListViewItem}">
<EventSetter Event="RequestBringIntoView" Handler="ProjectListView_OnRequestBringIntoView"/>
</Style>
</ListView.ItemContainerStyle>
在后面的代码中:
private void ProjectListView_OnRequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}
希望这对你也有用:)
【讨论】:
ListView 的默认行为是点击后调用BringIntoView()。您可以为PreviewMouseDown 事件添加一个事件处理程序,并通过设置e.Handled = true; 来处理它。
【讨论】:
OnPreviewMouseDown。
我找到了解决方法,我的 ListView 在 MVVM 中显示照片项
private void lv_PreviewMouseDown(object sender, MouseButtonEventArgs e)
{
var p=e.OriginalSource as FrameworkElement;
if (p != null && p.DataContext is **Photo**)
{
lv.SelectedItem = p.DataContext;
e.Handled = true;
}
}
【讨论】:
为列表视图设置ScrollViewer.VerticalScrollBarVisibility="Auto" 有帮助。
【讨论】: