无论何时在我的树形视图中选择一个节点,它都会自动进行横向滚动。 I've found the way to disable this。如果我在后面的代码使用此代码,它完美的作品:防止TreeView中的自动水平滚动不起作用。 MVVM,XAML方法
<TreeView>
<TreeView.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<EventSetter Event="RequestBringIntoView" Handler="TreeViewItem_RequestBringIntoView"/>
</Style>
</TreeView.ItemContainerStyle>
</TreeView>
private void TreeViewItem_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}
不过,如果我使用MVVM,我不能禁用水平滚动的项目:
我的窗口:
<Window x:Class="TreeViewWpfApplication.MainWindow"
. . . . .
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:ei=http://schemas.microsoft.com/expression/2010/interactions>
<TreeView Grid.Column="1" Margin="5" Background="Green">
<i:Interaction.Triggers>
<i:EventTrigger EventName="RequestBringIntoView">
<ei:CallMethodAction MethodName="RequestBringIntoView_Handler" TargetObject="{Binding}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<TreeView>
<TreeViewItem Header="---Level 1" >
<TreeViewItem Header="--- Level 2.1" >
<TreeViewItem Header="--- Level 3.1" >
</TreeViewItem>
</TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="Level 2.3" />
</TreeView>
</Window>
ViewModel:
public void RequestBringIntoView_Handler(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}
为什么我不能停止自动水平滚动到通过MVVM的方法?
XAML *方法。 MVVM是一种分离问题的模式,XAML是您用来制作UI的工具。 –
你有没有试过设置一些断点来检查处理程序是否被解雇? –
@KingKing,是的,我有。处理程序被解雇。但是,处理程序不会阻止水平滚动到该项目。但是,它在代码背后完美运行。我无法弄清楚我做错了什么。 – StepUp