C# 如何在滑块上画线或其他东西?

C# 如何在滑块上画线或其他东西?,c#,wpf,slider,line,draw,C#,Wpf,Slider,Line,Draw,我将为我自己的玩家设计一个搜索栏。我已经在使用Slider了 场景:当用户单击按钮A时,在搜索栏中会画一条线,并一直持续到用户单击按钮B。查看图片以便更好地理解!;) 我如何在滑块上画红线?我相信有两种解决方案 (或基于现有滑块)创建自己的滑块布局。我相信您必须从Slider扩展,以便添加额外的依赖属性来存储要绘制的线的信息 使用覆盖在现有滑块上 希望这将引导您朝着正确的方向前进。我认为最好的方法是使用自定义模板 更多信息请参见此处 您可以在此处下载默认控件模板 然后,您应该根据需要调整

我将为我自己的玩家设计一个搜索栏。我已经在使用Slider了

场景:当用户单击按钮
A
时,在搜索栏中会画一条线,并一直持续到用户单击按钮
B
。查看图片以便更好地理解!;)


我如何在滑块上画红线?我相信有两种解决方案

  • (或基于现有滑块)创建自己的滑块布局。我相信您必须从Slider扩展,以便添加额外的依赖属性来存储要绘制的线的信息
  • 使用覆盖在现有滑块上

希望这将引导您朝着正确的方向前进。

我认为最好的方法是使用自定义模板

更多信息请参见此处

您可以在此处下载默认控件模板

然后,您应该根据需要调整默认值。从上面的链接查看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>

@townsean:应该没问题!每个人都可以看到: