This is a migrated thread and some comments may be shown as answers.

RadSlider MinWidth

3 Answers 131 Views
Slider
This is a migrated thread and some comments may be shown as answers.
Austin
Top achievements
Rank 1
Austin asked on 19 Oct 2012, 02:16 PM
What is the best way to set a minimum width on a slider while having it still function correctly?

I have a timeline that can be zoomed out to a number of years and zoomed into a few minutes.  When zooming in, the slider's width is shrinking down to the point the middle thumb is unusable.

I thought this may be an existing forum discussion,but I was unable to spot it in a search so my apologies if I missed it.

3 Answers, 1 is accepted

Sort by
0
Pavel R. Pavlov
Telerik team
answered on 23 Oct 2012, 01:54 PM
Hi Austin,

I'm not sure that I understand your scenario well enough. However, you can try using the MinWidth and MaxWidth properties to limit the size of the RadSlider control. In case these properties are not working for you, could you please elaborate on how to reproduce the issue, do you use data binding scenario, how and which properties do you bind? You can change the attached project and send it back so I can better understand your scenario.

Kind regards,
Pavel R. Pavlov
the Telerik team

Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

0
Austin
Top achievements
Rank 1
answered on 23 Oct 2012, 04:59 PM

It is not the MinWidth of the entire RadSlider that is of concern, it is of the selection.  This perhaps is more of a RadTimeline issue instead of a RadSlider issue.  I'm not sure.  The easiest way I know to reproduce is with the Timeline.  The forum doesn't seem to allow me to attach a ZIP at this point.  So I've included the snippets below.

As you scroll in with the mouse wheel while the mouse pointer is over the timeline, eventually the middle thumb used to move the slider disappears.  As you continue to zoom in, you stop even seeing a visible change in the slider.

I need to ensure that the "slider" (the track portion of the RadSlider) obeys an minimum width requirement.  But I also need to ensure that once it gets to the minimum width that we are completely zoomed in.


<Window x:Class="WpfApplication1.MainWindow"
        Title="MainWindow"
        DataContext="{Binding RelativeSource={RelativeSource Self}}">
 
    <Grid>
        <telerik:RadTimeline x:Name="PART_Timeline" AutoSort="True"
            PeriodEnd="{Binding MaxDate}"
            PeriodStart="{Binding MinDate}"
            MinZoomRange="{Binding MinZoom}"
            ItemsSource="{Binding Items}"
            StartPath="StartDate"
            DurationPath="Duration"
        >   
            <telerik:RadTimeline.Intervals>
                <telerik:YearInterval IntervalSpans="1"/>
                <telerik:QuarterInterval IntervalSpans="1"/>
                <telerik:MonthInterval IntervalSpans="1"/>
                <telerik:WeekInterval IntervalSpans="1"/>
                <telerik:DayInterval IntervalSpans="1"/>
                <telerik:HourInterval IntervalSpans="1,6"/>
                <telerik:MinuteInterval IntervalSpans="1,10,30"/>
            </telerik:RadTimeline.Intervals>
        </telerik:RadTimeline>
    </Grid>
</Window>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
 
namespace WpfApplication1
{
 
    public class TItem
    {
        public DateTime StartDate { get; private set; }
        public TimeSpan Duration { get; private set; }
 
        public TItem(DateTime dt, TimeSpan duration)
        {
            StartDate = dt;
            Duration = duration;
        }
    }
 
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        private DateTime m_MinDate = new DateTime(2010, 1, 1);
        public DateTime MinDate
        {
            get
            {
                return m_MinDate;
            }
            set
            {
                m_MinDate = value;
            }
        }
 
        private DateTime m_MaxDate = new DateTime(2012, 1, 1);
        public DateTime MaxDate
        {
            get
            {
                return m_MaxDate;
            }
            set
            {
                m_MaxDate = value;
            }
        }
 
        private TimeSpan m_MinZoom = TimeSpan.FromMinutes(15);
        public TimeSpan MinZoom
        {
            get
            {
                return m_MinZoom;
            }
            set
            {
                m_MinZoom = value;
            }
        }
 
        private readonly List<TItem> m_Items = new List<TItem>
        {
            new TItem(new DateTime(2010, 2, 1), TimeSpan.Zero),
            new TItem(new DateTime(2011, 1, 3), TimeSpan.FromMinutes(2)),
        };
 
        public IList<TItem> Items
        {
            get { return m_Items; }
        }
 
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}

0
Tsvetie
Telerik team
answered on 25 Oct 2012, 12:00 PM
Hello Austin,

The behavior that you describe is expected. The selection of the slider represents the current visible period of the timeline control relative to the whole period - represented by the slider track. Basically, the minimum width of the slider selection is determined by the MinZoomRange value and the whole period (PeriodStart - PeriodEnd). Setting a minimum width greater than one pixel for the slider selection in this case would be misleading for the user, as 15 minutes on a 2-year-scale have actually very small representation in pixels.

Greetings,
Tsvetie
the Telerik team

Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

Tags
Slider
Asked by
Austin
Top achievements
Rank 1
Answers by
Pavel R. Pavlov
Telerik team
Austin
Top achievements
Rank 1
Tsvetie
Telerik team
Share this question
or