Я создаю «ползунок диапазона» из трех элементов управления ползунка, расположенных друг над другом.Основная идея заключается в том, что здесь используются два ползунка.
http://www.thejoyofcode.com/Creating_a_Range_Slider_in_WPF_and_other_cool_tips_and_tricks_for_UserControls_.aspx
Я добавляю третий ползунок, большой палец которого заполнит пространство между большими пальцами от другого ползунка.Пользователь сможет перетащить этот центральный большой палец, чтобы переместить два конца и поддерживать постоянное расстояние между двумя концами.
XAML - это просто три ползунка.Секрет того, чтобы сделать его хорошо наслоенным, заключается в использовании шаблона элемента управления (здесь не перепечатано. Вы можете найти его по указанному выше URL).
<Grid VerticalAlignment="Top">
<Border BorderThickness="0,1,0,0" BorderBrush="Green" VerticalAlignment="Center" Height="1"
Margin="5,0,5,0"/>
<Slider x:Name="LowerSlider"
Minimum="{Binding ElementName=root, Path=Minimum}"
Maximum="{Binding ElementName=root, Path=Maximum}"
Value="{Binding ElementName=root, Path=LowerValue, Mode=TwoWay}"
Margin="0,0,0,0"
Template="{StaticResource simpleSlider}"
/>
<Slider x:Name="MiddleSlider"
Minimum="{Binding ElementName=root, Path=Minimum}"
Maximum="{Binding ElementName=root, Path=Maximum}"
Value="{Binding ElementName=root, Path=MiddleValue, Mode=TwoWay}"
Margin="10,0,0,0"
Template="{StaticResource simpleSlider}"
>
</Slider>
<Slider x:Name="UpperSlider"
Minimum="{Binding ElementName=root, Path=Minimum}"
Maximum="{Binding ElementName=root, Path=Maximum}"
Value="{Binding ElementName=root, Path=UpperValue, Mode=TwoWay}"
Margin="20,0,0,0"
Template="{StaticResource simpleSlider}"
/>
</Grid>
При перетаскивании любого большого пальца мне нужно изменить размер центрального пальца, чтобы заполнить пространство между двумя концами большого пальца.
В приведенном ниже коде я могу уловить движениебольшой палец, и я могу найти средний ползунок, но я не могу понять, как программно добраться до большого пальца среднего ползунка, чтобы я мог изменить его размер, чтобы заполнить пространство между двумя внешними большими пальцами.
private void UpperSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
Slider slider= (Slider) this.FindName("MiddleSlider");
// how to find the middleSlider thumb so I can set
// it's width to fill the space between the outer thumbs
}
Спасибо за любые идеи,
Митч