無論何時在我的樹形視圖中選擇一個節點,它都會自動進行橫向滾動。 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