WPF: TreeView в ComboBox

Просто я добавил max-height для вашего класса grida,gridb на основе вашей высоты сетки. Комментарий для получения дополнительной информации. Я надеюсь, что это решение будет полезным.

* {
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    -webkit-box-sizing: border-box;
}

.navbar {
    position: sticky;
    top: 0;
    width: 100%;
    background: lightseagreen;
    color: white;
    height: 27px;
}

.grid {
    position: fixed;
    top: 27px;
    width: 100%;
    display: grid;
    grid-template-columns: 1fr 1fr;
    height: calc(100vh - 27px);
    grid-column-gap: 9px;
    background: silver;
}

.grida,
.gridb {
    display: grid;
    grid-template-rows: auto 1fr;
    background: gold;
    max-height: calc(100vh - 27px);
}

.divtop {
    background: lightgreen;
    height: auto;
}
.story {
    overflow-y: scroll;
}
<div class='navbar'>NAVBAR</div>
<div class='grid'>
    <div class='grida'>
        <div class='divtop'>TOP</div>
        <div class='story'>STORY</div>
    </div>
    <div class='gridb'>
        <div class='divtop'>TOP</div>
        <div class='story'>STORY</div>
    </div>
</div>

17
задан Regent 24 January 2011 в 22:47
поделиться

2 ответа

Вы смогли использовать обработчик событий на структурном виде для установки SelectedItem на поле комбинированного списка.

Чтобы сделать это, необходимо было бы установить свойство Tag структурного вида как так:

<TreeView Tag="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}"  MouseDoubleClick="treeview_MouseDoubleClick" ItemsSource="{Binding Children}" x:Name="TheTree">

Теперь в событии DoubleClick можно достигнуть ComboBox:

    private void treeview_MouseDoubleClick(object sender, RoutedEventArgs e)
    {
        try
        {
            TreeView tv = sender as TreeView;
            if(tv == null)
                return;
            var cB = tv.Tag as ComboBox;
            cB.SelectedItem = tv.SelectedItem;
        }
        catch (Exception e)
        {

        }
    }

Необходимо будет также переопределить способ, которым поле комбинированного списка Item является selecte, иначе целый TreeView будет выбран, как только Вы нажимаете на него.

1
ответ дан 30 November 2019 в 13:05
поделиться

Этот вопрос на самом деле тесно связан с этой

, так что вы, вероятно, найдете эту реализацию полезной. Это выпадающее окно с флажками внутри, но вы можете получить идею о том, как отделить текст в окне от всплывающего содержимого с вашим деревом.

Оно также демонстрирует идею о том, что свойство IsSelected должно быть на ваших сущностях модели, а затем привязано обратно к флажку Text свойству через модель. Другими словами, то, что вы показываете в выпадающем списке, может быть полностью не связано с содержимым.... Ну, может быть не полностью, но в моем приложении, когда пользователь выбирает несколько флажков в этой комбинации, я могу показать "Несколько выбранных опций", или что угодно.

HTH =)

.
1
ответ дан 30 November 2019 в 13:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: