Просто я добавил 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>
Вы смогли использовать обработчик событий на структурном виде для установки 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 будет выбран, как только Вы нажимаете на него.
Этот вопрос на самом деле тесно связан с этой
, так что вы, вероятно, найдете эту реализацию полезной. Это выпадающее окно с флажками внутри, но вы можете получить идею о том, как отделить текст в окне от всплывающего содержимого с вашим деревом.
Оно также демонстрирует идею о том, что свойство IsSelected
должно быть на ваших сущностях модели, а затем привязано обратно к флажку Text
свойству через модель. Другими словами, то, что вы показываете в выпадающем списке, может быть полностью не связано с содержимым.... Ну, может быть не полностью, но в моем приложении, когда пользователь выбирает несколько флажков в этой комбинации, я могу показать "Несколько выбранных опций", или что угодно.
HTH =)
.