none
DatePicker MouseWheel RRS feed

  • Вопрос

  • Как отключить прокручивание дат в DatePicker'e скроллером?

    Искал решения, но толкового так ничего и не нашел.


    и к тому же у меня DatePicker лежит в DataGrid'e как DataTemplate, я к нему привязывался через MouseWheel, но он почему-то не срабатывает, а если просто на странице лежит DatePicker, то MouseWheel срабатывает. и sender события вертает не DatePicker, а DateTime.
    • Изменено Letos07 10 октября 2012 г. 12:08
    8 октября 2012 г. 14:48

Ответы

  • Привет.

    Просто объявите свой класс DatePicker в котором переопределите метода onMouseWheel, тогда скролл обрабатываться не должен (т.е. не должен менять дату) при закрытом DatePicker:

        public class MyDatePicker : DatePicker
        {
            protected override void OnMouseWheel(MouseWheelEventArgs e)
            {
            }
        }

    <UserControl
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:local="clr-namespace:SilverlightApplication1" x:Class="SilverlightApplication1.MainPage"
        mc:Ignorable="d"
        d:DesignHeight="300" d:DesignWidth="400">
        <Grid x:Name="LayoutRoot" Background="White">
            <sdk:DatePicker HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" VerticalAlignment="Top" Width="120" RenderTransformOrigin="-0.4,-0.522"/>
            <local:MyDatePicker HorizontalAlignment="Left" Height="23" Margin="211,10,0,0" VerticalAlignment="Top" Width="120"/>
        </Grid>
    </UserControl>


    Для связи [mail]

    • Помечено в качестве ответа Letos07 12 октября 2012 г. 11:40
    11 октября 2012 г. 7:24
    Модератор

Все ответы

  • Привет.

    Просто объявите свой класс DatePicker в котором переопределите метода onMouseWheel, тогда скролл обрабатываться не должен (т.е. не должен менять дату) при закрытом DatePicker:

        public class MyDatePicker : DatePicker
        {
            protected override void OnMouseWheel(MouseWheelEventArgs e)
            {
            }
        }

    <UserControl
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:local="clr-namespace:SilverlightApplication1" x:Class="SilverlightApplication1.MainPage"
        mc:Ignorable="d"
        d:DesignHeight="300" d:DesignWidth="400">
        <Grid x:Name="LayoutRoot" Background="White">
            <sdk:DatePicker HorizontalAlignment="Left" Height="23" Margin="10,10,0,0" VerticalAlignment="Top" Width="120" RenderTransformOrigin="-0.4,-0.522"/>
            <local:MyDatePicker HorizontalAlignment="Left" Height="23" Margin="211,10,0,0" VerticalAlignment="Top" Width="120"/>
        </Grid>
    </UserControl>


    Для связи [mail]

    • Помечено в качестве ответа Letos07 12 октября 2012 г. 11:40
    11 октября 2012 г. 7:24
    Модератор
  • SL5. Переопределение события ничего не дало :(
    9 января 2013 г. 9:08
  • В SL5 такое же поведение как в SL4. Когда курсор стоит внутри DatePicker, но сам DatePicker не открыт, то скролл не должен менять дату, если вы применили решение выше.

    При открытом DatePicker, т.е. при выборе даты, скролл меняет месяцы.


    Для связи [mail]

    9 января 2013 г. 11:36
    Модератор
  • Ай, прошу прощения... действительно работает (забыл опубликовать проект).
    9 января 2013 г. 12:54