Сложные элементы управления во всплывающем окне - PullRequest
0 голосов
/ 12 января 2012

Я создаю элемент управления, позволяющий управлять некоторыми элементами и выбирать один. Он включает 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>
...
...