Могу ли я избежать размещения содержимого TreeViewItem в верхнем левом углу моего окна WPF? - PullRequest
0 голосов
/ 16 января 2019

У меня есть окно WPF, в котором есть несколько ListViews внутри TreeView. Всякий раз, когда содержимое 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>

Изображения: Как это выглядит Как я ожидаю, что это будет выглядеть

1 Ответ

0 голосов
/ 16 января 2019

Как насчет этого?

<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;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...