Я создаю элемент управления, позволяющий управлять некоторыми элементами и выбирать один.
Он включает TextBox
и Button
, позволяющие открыть Popup
там, где все это происходит.
Я хотел бы иметь список предметов с деталями в классе System.Windows.Controls.Primitives.Popup
. Я использую Grid
с 2 столбцами, первый содержит список элементов, второй - его детали.
Теперь я хочу использовать элемент управления System.Windows.Controls.GridSplitter
, чтобы позволить пользователю изменить размер области данных.
Проблема в том, что это работает везде, кроме элемента управления Popup
.
У меня вопрос, должен ли я использовать какой-то другой элемент управления, имитирующий поведение Popup
(Window
..), или есть какой-то другой способ добиться этого.
Редакция:
Если я устанавливаю свойство ширины всплывающего окна, оно работает, потому что всплывающее окно не пытается адаптироваться к своему содержимому. Но я хочу сохранить это поведение ..
Я планирую добавить сложные анимации к элементам управления Popup
.
КОД:
...
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBox Grid.Column="0" Grid.Row="0" Text="Selected Item" />
<ToggleButton Grid.Row="0" Grid.Column="1" Focusable="False">
<Grid>
<TextBlock Text="Select" />
<Popup StaysOpen="False" Width="700" VerticalAlignment="Bottom" IsOpen="{Binding Path=IsChecked,
RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ToggleButton, AncestorLevel=1},
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" PlacementTarget="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=ToggleButton, AncestorLevel=1}}">
<local:MyManagementControl />
</Popup>
</Grid>
</ToggleButton>
</Grid>
...
MyManagementControl содержит:
...
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<ListView Grid.Row="0" Grid.Column="0">
...
</ListView>
<GridSplitter Grid.Column="0" Width="10" HorizontalAlignment="Right" VerticalAlignment="Stretch" />
<Grid Grid.Row="0" Grid.Column="1">
...Details...
</Grid>
</Grid>
...