[Bug] RadDataForm+RadNumericUpDown

3 posts, 1 answers
  1. Doxxer
    Doxxer avatar
    5 posts
    Member since:
    Nov 2011

    Posted 26 Oct 2012 Link to this post

    Hi.

    I've found weird behaviour in RadDataForm with some RadNumericUpDown inside.
    I've created simple project:

    1. Model:
    public class Model : INotifyPropertyChanged
    {
        public Model()
        {
            _first = 123;
            _second = 434;
        }  
     
        private int _first;
        public int First
        {
            get { return _first; }
            set
            {
                if (_first != value)
                {
                    _first = value;
                    OnPropertyChanged("First");
                }
            }
        }
     
        private int _second;
        public int Second
        {
            get { return _second; }
            set
            {
                if (_second != value)
                {
                    _second = value;
                    OnPropertyChanged("Second");
                }
            }
        }
     
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName)
        {
            var handler = PropertyChanged;
            if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
        }  
    }

    2. XAML:
    <UserControl x:Class="SilverlightApplication16.MainPage"
                 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                 xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
                 xmlns:SilverlightApplication16="clr-namespace:SilverlightApplication16"
                 xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
                 d:DesignHeight="300"
                 d:DesignWidth="400"
                 mc:Ignorable="d">
        <UserControl.DataContext>
            <SilverlightApplication16:Model />
        </UserControl.DataContext>
        <UserControl.Resources>
            <DataTemplate x:Key="dataFormTemplate">
                <StackPanel>
                    <telerik:DataFormDataField DataMemberBinding="{Binding First}" IsTabStop="False">
                        <telerik:RadNumericUpDown Name="FistNUD"
                                                  IsInteger="True"
                                                  UpdateValueEvent="PropertyChanged"
                                                  Value="{Binding First, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
                    </telerik:DataFormDataField>
                    <telerik:DataFormDataField DataMemberBinding="{Binding Second}" IsTabStop="False">
                        <telerik:RadNumericUpDown Name="SecondNUD"
                                                  IsInteger="True"
                                                  UpdateValueEvent="PropertyChanged"
                                                  Value="{Binding Second, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
     
                    </telerik:DataFormDataField>
                </StackPanel>
            </DataTemplate>
        </UserControl.Resources>
        <StackPanel Orientation="Vertical">               
            <telerik:RadDataForm AutoEdit="True"
                                 AutoGenerateFields="False"
                                 CommandButtonsVisibility="None"
                                 CurrentItem="{Binding}"
                                 EditTemplate="{StaticResource dataFormTemplate}" />
            <TextBlock Text="{Binding First}" />
            <TextBlock Text="{Binding Second}" />
        </StackPanel>
    </UserControl>

    3. MainPage code-behind:

    using System.Diagnostics;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Input;
    using System.Windows.Media;
     
    namespace SilverlightApplication16
    {
        public partial class MainPage : UserControl
        {
            public MainPage()
            {
                InitializeComponent();
     
                GotFocus += OnGotFocus;
                LostFocus += OnLostFocus;
            }
     
            void OnLostFocus(object sender, RoutedEventArgs e)
            {
                var focusedElement = e.OriginalSource as FrameworkElement;
                if (focusedElement != null)
                {
                    Debug.WriteLine("LostFocus - {0}", focusedElement.Name);
                }
            }
     
            void OnGotFocus(object sender, RoutedEventArgs e)
            {
                var focusedElement = FocusManager.GetFocusedElement() as FrameworkElement;
                if (focusedElement != null)
                {
                    var parent = VisualTreeHelper.GetParent(focusedElement) as FrameworkElement;
                    var radNumeric = VisualTreeHelper.GetParent(parent) as FrameworkElement;
     
                    string parentName = radNumeric != null ? radNumeric.Name : "Parent is null";
     
                    Debug.WriteLine("GotFocus! focused now - {0}. Parent Is {1}", focusedElement.Name, parentName);
                }
            }
        }
    }

    4. Issue is here:
    a. Build app. Start it.
    b. Click on the first NumericUpDown.
    c. Click on second NumericUpDown.
    d. Silverlight plugin is freezed! Note the output window in the Visual Studio (in debug mode):
    ..................
    GotFocus! focused now - textbox. Parent Is FistNUD
    LostFocus - textbox
    GotFocus! focused now - textbox. Parent Is SecondNUD
    LostFocus - textbox
    GotFocus! focused now - textbox. Parent Is FistNUD
    LostFocus - textbox
    GotFocus! focused now - textbox. Parent Is SecondNUD
    LostFocus - textbox
    GotFocus! focused now - textbox. Parent Is FistNUD
    LostFocus - textbox
    GotFocus! focused now - textbox. Parent Is SecondNUD
    LostFocus - textbox
    GotFocus! focused now - textbox. Parent Is FistNUD
    LostFocus - textbox
    GotFocus! focused now - textbox. Parent Is SecondNUD
    ...............

    Note:
    1. there is no bug if i remove AutoGenerateFields="False" from RadDataForm.
    2.There is no bug with standart silverlight toolkit NumericUpDown.

    So, is there any workaround?
    Thank you and sorry for my english. I would appreciate a fast response.

    [Edited-1]
    I'm using Silverlight 5.0, VS 2012, Telerik components v.2012 Q2 SP2
  2. Answer
    Vladi
    Admin
    Vladi avatar
    744 posts

    Posted 31 Oct 2012 Link to this post

    Hello,

    Thank you for writing to us.

    Could you try to reproduce the issue with our latest 2012 3 1017 release dlls and lets us know if the issue persists?

    Regards,
    Vladi
    the Telerik team

    Explore the entire Telerik portfolio by downloading Telerik DevCraft Ultimate.

  3. DevCraft banner
  4. Doxxer
    Doxxer avatar
    5 posts
    Member since:
    Nov 2011

    Posted 31 Oct 2012 Link to this post

    Thank you, it's ok. Issue doesn't persist after upgrade to Q3 2012.
Back to Top