Как нарисовать линию или что-то на слайдере? - PullRequest
2 голосов
/ 08 февраля 2011

Я собираюсь разработать панель поиска для моего собственного игрока.Я уже использую Slider.

Сценарий: Когда пользователь нажимает кнопку A, в строке поиска будет нарисована линия, которая будет продолжаться, пока пользователь не нажмет кнопку B.Проверьте изображение, чтобы понять лучше!;)

Изображение http://efreephoto.com/pictures/11182763364d5141df3d8d8.png

Как мне просто нарисовать эту красную линию на слайдере?

Ответы [ 2 ]

3 голосов
/ 08 февраля 2011

Я считаю, что есть два решения.

  • Создайте собственный шаблон (или основывайте его на существующем), чтобы создать свой собственный макет слайдера.Я полагаю, что вам придется выходить из Slider, чтобы добавить дополнительные свойства зависимостей для хранения информации для линии, которую нужно нарисовать.
  • Используйте adorner для наложения поверх существующего слайдера.

Надеюсь, это поможет вам в правильном направлении.

1 голос
/ 08 февраля 2011

Я думаю, что лучше всего использовать собственный шаблон.

См. Здесь для получения дополнительной информации http://msdn.microsoft.com/en-us/library/aa970773.aspx

Вы можете скачать шаблоны управления по умолчанию здесь
http://code.msdn.microsoft.com/Project/Download/FileDownload.aspx?ProjectName=wpfsamples&DownloadId=7741

Затем вы должны адаптировать настройки по умолчанию кты хочешь.По приведенной выше ссылке посмотрите на файл slider.xaml и обновите следующий раздел до того, что вам нравится.

<ControlTemplate x:Key="HorizontalSlider" TargetType="{x:Type Slider}">
    <Grid>
      <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto" MinHeight="{TemplateBinding Slider.MinHeight}"/>
        <RowDefinition Height="Auto"/>
      </Grid.RowDefinitions>
      <TickBar 
        Name="TopTick"
        SnapsToDevicePixels="True" 
        Placement="Top"
        Fill="{StaticResource GlyphBrush}"
        Height="4"
        Visibility="Collapsed" />
      <Border 
        Name="TrackBackground"
        Margin="0"
        CornerRadius="2" 
        Height="4"
        Grid.Row="1"
        Background="{StaticResource LightBrush}" 
        BorderBrush="{StaticResource NormalBorderBrush}"
        BorderThickness="1" />
      <Track Grid.Row="1" Name="PART_Track">
        <Track.DecreaseRepeatButton>
          <RepeatButton 
            Style="{StaticResource SliderButtonStyle}"
            Command="Slider.DecreaseLarge" />
        </Track.DecreaseRepeatButton>
        <Track.Thumb>
          <Thumb Style="{StaticResource SliderThumbStyle}" />
        </Track.Thumb>
        <Track.IncreaseRepeatButton>
          <RepeatButton 
            Style="{StaticResource SliderButtonStyle}"
            Command="Slider.IncreaseLarge" />
        </Track.IncreaseRepeatButton>
      </Track>
      <TickBar 
        Name="BottomTick"
        SnapsToDevicePixels="True" 
        Grid.Row="2"
        Fill="{TemplateBinding Foreground}"
        Placement="Bottom"
        Height="4"
        Visibility="Collapsed" />
    </Grid>
...