I’m working on a TreeView and i have some childs into it.
The problem is that when I select a child with a width superior than the TreeView, the scroll automaticaly moves to show all the selected item, i want to disable this behavior!
I’ve already tried to handle the RequestBringIntoView event but it doesnt seems to work!
Thanks for your help!
Here is the XAML:
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="350">
<Grid>
<TreeView RequestBringIntoView="TreeView_RequestBringIntoView">
<TreeViewItem Header="Monster huge tree view item Header OMG WTF IS THAT BBQ"/>
<TreeViewItem Header="TreeView Elem 1">
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1">
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1">
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1">
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1">
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1">
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="Monster huge tree view item Header OMG WTF IS THAT BBQ">
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1">
<TreeViewItem Header="Monster huge tree view item Header OMG WTF IS THAT BBQ"/>
</TreeViewItem>
</TreeViewItem>
</TreeViewItem>
</TreeViewItem>
</TreeViewItem>
</TreeViewItem>
</TreeViewItem>
</TreeViewItem>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
<TreeViewItem Header="TreeView Elem 1"/>
</TreeView>
</Grid>
</Window>
And the code-behing CS:
using System.Windows;
namespace WpfApplication2
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void TreeView_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}
}
}
You need to handle the
RequestBringIntoViewevent on theTreeViewItemnot theTreeView.You’ll need to use an event setter to do this for databound items like below.
or like below for your xaml defined example
Where
Null_Handleris defined as below