У меня есть элемент управления, который содержит devexpress GridControl
. Я хотел бы настроить ScrollViewer
так, чтобы, когда область просмотра меньше минимальной ширины GridControl
, появлялась горизонтальная полоса прокрутки. Затем, когда область просмотра изменяется, я бы хотел, чтобы полоса прокрутки исчезала, когда область просмотра больше, чем MinWidth
, а GridControl
растягивалась вместе с окном до тех пор, пока не будет достигнуто MaxWidth
, после чего GridControl
перестанет расти. Затем, и это та часть, которая кажется такой неуловимой, я хотел бы иметь возможность снова сжимать область просмотра и иметь с ней контракт GridControl
до тех пор, пока не будет достигнуто «MinWidth» и снова не появится полоса прокрутки.
Пока что я могу добиться только роста GridControl
- когда область просмотра сжимается, сразу появляется полоса прокрутки, и GridControl
никогда не станет меньше.
Есть идеи?
Изменить: похоже, это проблема с DevExpress GridControl
. Вот пример, демонстрирующий поведение с Rectangle
s, DataGrid
и GridControl
:
<UserControl xmlns:dxg="clr-namespace:DevExpress.Xpf.Grid;assembly=DevExpress.Xpf.Grid.v11.2" x:Class="MyNamespace.ScrollViewerTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d">
<ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Rectangle Width="500" Height="200" Fill="AliceBlue" />
<Rectangle Grid.Row="1" MinHeight="200" MaxHeight="400" MinWidth="500" MaxWidth="1000" Fill="Bisque" />
<DataGrid Grid.Row="2" MinWidth="500" MaxWidth="10000" MinHeight="200" MaxHeight="400">
<DataGrid.Columns>
<DataGridTextColumn Header="Column 1" Width="Auto"/>
<DataGridTextColumn Header="Column 2" Width="Auto"/>
<DataGridTextColumn Header="Column 3" Width="Auto"/>
<DataGridTextColumn Header="Column 4" Width="Auto"/>
</DataGrid.Columns>
</DataGrid>
<dxg:GridControl Grid.Row="3" MinWidth="500" MinHeight="200" MaxWidth="1000" MaxHeight="400"/>
</Grid>
</ScrollViewer>
</UserControl>
Обратите внимание, что GridControl
начинается с MaxWidth
и не растягивается с остальными элементами управления. Кроме того, обратите внимание, что изменение размера по вертикали работает — GridControl
увеличивается и уменьшается при изменении размера окна (возможно, вам придется настроить MinHeight
, если у вас меньший монитор). Другие элементы управления правильно изменяют размер между максимальным и минимальным. Первый прямоугольник имеет фиксированную ширину и высоту в качестве базового случая.