我有一个WPF窗口,该窗口在TreeView内有一些ListView。每当TreeViewItem的内容变得过高和/或过宽时,只要在TreeViewItem的“内部”单击一个空闲点,就将其放置在窗口的左上角(参见图片)。 有没有可能/财产来避免这种情况?我想保留滚动到该用户的位置的选择,并且不想在他不小心单击某个位置时中断他的阅读。
简化示例:
Title="MainWindow" Height="150" Width="400">
<TreeView>
<TreeViewItem Header="Some Headline" IsExpanded="True">
<TreeViewItem Header="Some Text" IsExpanded="True">
<TextBlock Width="400" Height="150" Background="PaleGreen"> Some Text in a Block</TextBlock>
</TreeViewItem>
</TreeViewItem>
</TreeView>
答案 0 :(得分:0)
怎么样?
<TreeView>
<TreeView.Resources>
<Style TargetType="TreeViewItem">
<EventSetter Event="RequestBringIntoView" Handler="TreeViewItem_RequestBringIntoView"/>
</Style>
</TreeView.Resources>
<TreeViewItem Header="Some Headline" IsExpanded="True">
<TreeViewItem Header="Some Text" IsExpanded="True">
<TextBlock Width="400" Height="150" Background="PaleGreen"> Some Text in a Block</TextBlock>
</TreeViewItem>
</TreeViewItem>
</TreeView>
后面的代码:
private void TreeViewItem_RequestBringIntoView(object sender, RequestBringIntoViewEventArgs e)
{
e.Handled = true;
}