Сохранить ползунок в пользовательском контроле от масштабирования в WPF - PullRequest
3 голосов
/ 19 октября 2011

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

Я хочу, чтобы пользователь мог переводить, вращать и масштабировать этот элемент управления.Проблема в том, что когда элемент управления масштабируется, его содержимое также масштабируется, и я хочу, чтобы ползунок не масштабировался.Можно ли каким-то образом удержать ползунок от масштабирования?

Следует также упомянуть, что манипулирование элементом управления выполняется путем установки элемента управления ismanipulationenabled в значение true и использования дельта-события манипуляции.РЕДАКТИРОВАТЬ:

Вот как выглядит xaml для элемента управления:

    <Grid Name="movieGrid" ShowGridLines="True">

        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
            <Border x:Name="moviePlayerBorder" Background="Black" BorderBrush="Blue" BorderThickness="2,2,2,2" CornerRadius="5,5,5,5"  Grid.RowSpan="2">

                <Grid Name="contentGrid">
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                <WinControls:MediaElement x:Name="movieDisplay" ScrubbingEnabled="True" IsEnabled="True" Grid.RowSpan="2"
                                      LoadedBehavior="Manual" UnloadedBehavior="Manual" 
                                      MediaOpened="movieDisplay_MediaOpened">
            </WinControls:MediaElement>


        <Image x:Name="btnPlay" Grid.Row="1" Height="60" Width="60" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Margin="120,44,112,43" Grid.RowSpan="2">
                </Image>

                    <DockPanel LastChildFill="True" HorizontalAlignment="Stretch" Margin="6,2,6,0" Grid.Row="0">
                        <TextBlock Text="test" Margin="0,0,0,0" Name="txtBlockTitlu" HorizontalAlignment="Stretch"
                   FontSize="14" VerticalAlignment="Top" Foreground="White" TextWrapping="Wrap" Visibility="Collapsed"/>
                    </DockPanel>
                </Grid>
            </Border>



        <Slider x:Name="seekBar" VerticalAlignment="Bottom" HorizontalAlignment="Center" Width="299"
                         Thumb.DragStarted="seekBar_DragStarted" Thumb.DragCompleted="seekBar_DragCompleted" Thumb.DragDelta="seekBar_DragDelta" MaxHeight="33" 

                         Minimum="0" Maximum="286" Height="33" Margin="0,0,0,0" Grid.Row="1"/>

</Grid>

1 Ответ

0 голосов
/ 24 ноября 2011

Если вы хотите создать полностью масштабируемый пользовательский элемент управления, вы должны определять макет только со значениями размера столбца строки / строки строки, например. auto, x * или фиксированные значения (если действительно нужны).

не использовать фиксированные значения размеров для элементов.

...