我可以避免将TreeViewItem的内容放在WPF窗口的左上角吗?

时间:2019-01-16 16:08:32

标签: c# wpf

我有一个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>

图片: How it looks How I expect it to look

1 个答案:

答案 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;
        }