Telerik Forums
UI for WPF Forum
12 answers
223 views
Hi,

I think I found a bug while trying to set the tooltip for the headers. This seems to be a regression. I downloaded the code from this post:

http://www.telerik.com/community/forums/wpf/gridview/displaying-the-radgrid-header-column-tooltip.aspx

Converted the ColumnTooltip project in that post to VS 2010, changed the .NET framework version to 4.0 CP and replaced the telerik dlls with the latest version. I then run the sample and when I hover the mouse over a header the app crashes with the exception below. The tooltip is being set as in:

<Setter Property="ToolTip" Value="{Binding Content, RelativeSource={RelativeSource Self}}"/>

Did this change in later versions?

Here is the exception:
 
System.InvalidOperationException was unhandled
  Message=Specified element is already the logical child of another element. Disconnect it first.
  Source=PresentationFramework
  StackTrace:
       at System.Windows.FrameworkElement.ChangeLogicalParent(DependencyObject newParent)
       at System.Windows.FrameworkElement.AddLogicalChild(Object child)
       at System.Windows.Controls.ContentControl.OnContentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
       at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
       at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)
       at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)
       at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)
       at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)
       at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
       at System.Windows.Data.BindingOperations.SetBinding(DependencyObject target, DependencyProperty dp, BindingBase binding)
       at System.Windows.Controls.PopupControlService.RaiseToolTipOpeningEvent()
       at System.Windows.Threading.DispatcherTimer.FireTick(Object unused)
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.DispatcherOperation.InvokeImpl()
       at System.Threading.ExecutionContext.runTryCode(Object userData)
       at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Windows.Threading.DispatcherOperation.Invoke()
       at System.Windows.Threading.Dispatcher.ProcessQueue()
       at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.Dispatcher.WrappedInvoke(Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
       at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
       at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
       at System.Windows.Application.RunInternal(Window window)
       at System.Windows.Application.Run()
       at ColumnTooltip.App.Main() in E:\temp\ColumnTooltip\ColumnTooltip\obj\Debug\App.g.cs:line 0
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: 

Christoph
Top achievements
Rank 1
 answered on 16 Nov 2011
0 answers
99 views
Would it be possible to change the column name of a data bound GridView?

I have a GridView bounded to a dataset. Any changes to the data are save back the the database on rowEditEnded event.
My reason for changing column name like NameID or DateOfBirth to Name ID or Date Of Birth to appear as column names as it would look nicer. Would I be able to do that and update to the database on rowEditEnded event.
Oliver
Top achievements
Rank 1
 asked on 16 Nov 2011
6 answers
169 views
In the good old version of RadGrid in Asp.Net, it's documented how to use an EditForm with Insert/Update/Cancel, but how is this done in WPF when using MVVM pattern?

I can not find anything in the docs about RadGrid when using MVVM. Is there a separate documentation, or is Telerik ignoring the pattern?
Jason
Top achievements
Rank 1
 answered on 15 Nov 2011
2 answers
94 views
I feel like I must be missing something simple, but I've been through the examples and can't find anything.  I have a gridview bound to a datatable.  The values populate fine, but when I try to edit, the textbox shows up blank.  It works fine if I set AutoGenerateColumns="true", I need to be able to set it to false

<telerik:RadGridView Margin="10,10,10,10" Name="rgridUsers" ItemsSource="{Binding}" RowIndicatorVisibility="Collapsed" ShowGroupPanel="False"
     SelectionMode="Extended" AutoGenerateColumns="False" CanUserFreezeColumns="False">
    <telerik:RadGridView.Columns>
        <telerik:GridViewDataColumn DataMemberBinding="{Binding User}" Header="Users" />
        <telerik:GridViewDataColumn DataMemberBinding="{Binding Active}" Header="Active" />
        <telerik:GridViewColumn>
            <telerik:GridViewColumn.CellTemplate>
                <DataTemplate>
                    <telerik:RadButton Command="Delete">
                        <Image Source="Images/Delete.png" />
                    </telerik:RadButton>
                </DataTemplate>
            </telerik:GridViewColumn.CellTemplate>
        </telerik:GridViewColumn>
 
    </telerik:RadGridView.Columns>
 
</telerik:RadGridView>


      DataTable dt = new DataTable();
public Administration()
 {
     InitializeComponent();
 
 
     dt.Columns.Add("User", typeof(string));
     dt.Columns.Add("Active", typeof(bool));
 
     DataRow row;
     row = dt.NewRow();
     row["User"] = "User1";
     row["Active"] = true;
     dt.Rows.Add(row);
     row = dt.NewRow();
     row["User"] = "User2";
     row["Active"] = true;
     dt.Rows.Add(row);
     row = dt.NewRow();
     row["User"] = "User3";
     row["Active"] = false;
     dt.Rows.Add(row);
     row = dt.NewRow();
     row["User"] = "User4";
     row["Active"] = true;
     dt.Rows.Add(row);
     row = dt.NewRow();
     row["User"] = "User5";
     row["Active"] = false;
     dt.Rows.Add(row);
     row = dt.NewRow();
     row["User"] = "User6";
     row["Active"] = true;
     dt.Rows.Add(row);
 
     rgridUsers.ItemsSource = dt;
 }

Gama
Top achievements
Rank 1
 answered on 15 Nov 2011
1 answer
113 views
Hello,

I would like to use the loading indicator in the WPF GridView for when the DataLoadMode is asynchronous.

I also intend to use instances of the BusyIndicator control in other areas of my application.

I would like the loading indicator in the GridView to look the same as my instances of the BusyIndicator control - is it possible to change the style of GridView indicator? If so, please could you provide an example?

Thanks,

Tom
Vanya Pavlova
Telerik team
 answered on 15 Nov 2011
6 answers
150 views
Hi,

I'm using WPF controls version 2011.2.712.35.
Randomly getting following exception below.

If there is a workaround to this exception please let me know.

Thanks,
Ruben

at Telerik.Windows.Controls.RadTreeView.InheritTreeProperties(RadTreeViewItem treeViewItem) in c:\TB\101\WPF_Scrum\Release_WPF\Sources\Development\Controls\Navigation\TreeView\RadTreeView.CommonItemContainer.cs:line 600
at Telerik.Windows.Controls.RadTreeView.PrepareContainerForDescendant(DependencyObject element, Object item, ItemsControl owner) in c:\TB\101\WPF_Scrum\Release_WPF\Sources\Development\Controls\Navigation\TreeView\RadTreeView.CommonItemContainer.cs:line 152
at Telerik.Windows.Controls.RadTreeViewItem.PrepareContainerForItemOverride(DependencyObject element, Object item) in c:\TB\101\WPF_Scrum\Release_WPF\Sources\Development\Controls\Navigation\TreeView\RadTreeViewItem.cs:line 1513
at System.Windows.Controls.ItemsControl.MS.Internal.Controls.IGeneratorHost.PrepareItemContainer(DependencyObject container, Object item)
at System.Windows.Controls.ItemContainerGenerator.System.Windows.Controls.Primitives.IItemContainerGenerator.PrepareItemContainer(DependencyObject container)
at Telerik.Windows.Controls.TreeView.TreeViewPanel.InsertContainer(Int32 childIndex, UIElement container, Boolean isRecycled) in c:\TB\101\WPF_Scrum\Release_WPF\Sources\Development\Controls\Navigation\TreeView\Virtualization\TreeViewPanel.cs:line 2257
at Telerik.Windows.Controls.TreeView.TreeViewPanel.AddContainerFromGenerator(Int32 childIndex, UIElement child, Boolean newlyRealized) in c:\TB\101\WPF_Scrum\Release_WPF\Sources\Development\Controls\Navigation\TreeView\Virtualization\TreeViewPanel.cs:line 2309
at Telerik.Windows.Controls.TreeView.TreeViewPanel.MeasureOverride(Size constraint) in c:\TB\101\WPF_Scrum\Release_WPF\Sources\Development\Controls\Navigation\TreeView\Virtualization\TreeViewPanel.cs:line 1454
at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
at System.Windows.UIElement.Measure(Size availableSize)
at System.Windows.ContextLayoutManager.UpdateLayout()
at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)
at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()
at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.DispatcherOperation.InvokeImpl()
at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
at System.Threading.ExecutionContext.runTryCode(Object userData)
at System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean ignoreSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Windows.Threading.DispatcherOperation.Invoke()
at System.Windows.Threading.Dispatcher.ProcessQueue()
at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.InvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
at System.Windows.Threading.Dispatcher.Run()
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at System.Windows.Application.Run(Window window)
at System.Windows.Application.Run()
Petar Mladenov
Telerik team
 answered on 15 Nov 2011
0 answers
191 views
So, I figured out how to create the Child grid int he code behind, but now I need to have a click event on the Child grid rows. With the following code I get a "Handler type is mismatched" on the order.AddHandler line.

Any help on how to get this to work?

Thanks,

Doug

    private void rgvPatientImages_DataLoading(object sender, Telerik.Windows.Controls.GridView.GridViewDataLoadingEventArgs e)
    {
        GridViewDataControl dataControl = (GridViewDataControl)sender;
 
        if (dataControl.ParentRow != null)
        {
            dataControl.BorderThickness = new Thickness(0, 1, 0, 1);
            dataControl.GridLinesVisibility = GridLinesVisibility.None;
            dataControl.CanUserFreezeColumns = false;
            dataControl.ShowGroupPanel = false;
            dataControl.AutoGenerateColumns = false;
            dataControl.ChildTableDefinitions.Clear();
            dataControl.IsReadOnly = true;
            dataControl.SelectionMode = SelectionMode.Single;
            dataControl.SelectionUnit = GridViewSelectionUnit.Cell;
 
            GridViewDataColumn customerId = new GridViewDataColumn();
            customerId.Header = "Customer Id";
            customerId.DataMemberBinding = new Binding("CustId");
            customerId.DataType = typeof(int);
            dataControl.Columns.Add(customerId);
 
            GridViewDataColumn order = new GridViewDataColumn();
            order.UniqueName = "OrderIdId";
            order.Header = "Order Id";
            order.DataType = typeof(int);
 
            order.AddHandler(MouseLeftButtonDownEvent, new EventHandler<MouseButtonEventArgs> (orderId_MouseLeftButtonUp));
            dataControl.Columns.Add(order);
     }
}
 
    private void orderId_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        object ID = ((Button)sender).CommandParameter;
 
        CustomerOrder NewWindow = new CustomerOrder();
        NewWindow.orderId = Convert.ToInt32(sender.ToString());
        NewWindow.Show();
        this.Close();
    }
Doug
Top achievements
Rank 1
 asked on 15 Nov 2011
10 answers
206 views
Hello,

I have a Problem with the Databinding to a RichTextBox that is located in a Datatemplate for a RadCarousel.

Here my Xaml:

<DataTemplate x:Key="customItemTemplate">
                    <Border Background="LightSlateGray" Padding="10">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />                                
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="600" />         
                            </Grid.RowDefinitions>                         
                            <telerik:RadRichTextBox Name="radRichTextBox"
                                    IsReadOnly="True"
                                    HorizontalAlignment="Stretch"
                                    VerticalAlignment="Stretch" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="5">
                                <telerik:RadDocument LayoutMode="Paged">
                                    <telerik:Section PageMargin="10, 10, 10, 10">                                     
                                        <telerik:Paragraph TextAlignment="Left">
                                            <telerik:Span Text="{Binding Redner}" />                                          
                                            <telerik:Span FontWeight="Bold" Text=" RadRichTextBox!" />
                                        </telerik:Paragraph>                                    
                                        <telerik:Paragraph>
                                            <telerik:Span FontWeight="Bold" Text="RadRichTextBox" />
                                            <telerik:Span Text=" is a control that is able to display and edit rich-text content including  formatted  text arranged in pages, paragraphs, spans (runs) etc." />
                                        </telerik:Paragraph>
                                        <telerik:Table LayoutMode="AutoFit">
                                            <telerik:TableRow>
                                                <telerik:TableCell>
                                                    <telerik:Paragraph>
                                                        <telerik:Span Text="Cell 1" />
                                                    </telerik:Paragraph>
                                                </telerik:TableCell>
                                                <telerik:TableCell>
                                                    <telerik:Paragraph>
                                                        <telerik:Span Text="Cell 2" />
                                                    </telerik:Paragraph>
                                                </telerik:TableCell>
                                            </telerik:TableRow>
                                            <telerik:TableRow>
                                                <telerik:TableCell ColumnSpan="2">
                                                    <telerik:Paragraph>
                                                        <telerik:Span Text="Cell 3" />
                                                    </telerik:Paragraph>
                                                </telerik:TableCell>
                                            </telerik:TableRow>
                                        </telerik:Table>
                                    </telerik:Section>
                                </telerik:RadDocument>
                            </telerik:RadRichTextBox>
                        </Grid>
                    </Border>
                </DataTemplate>
            </Grid.Resources>

The first Problem is the access to the line with <telerik:Span Text="{Binding Redner}" />
How can I make a Binding from Code-behind to the Controls in the Datatemplate?
The second Question is: How can i Bind the Width from the Carousel-Item to the Variable Monitor-Resolution? I need a Width with max 90% from the Carousel.

Sorry for my bad English. I hope you now what i mean.

Thank You



Johann
Top achievements
Rank 1
 answered on 15 Nov 2011
1 answer
107 views
Hi,

i have a GridView with Hierarchy.

1.How can i hide the expand Button.
2.How can i expand with the SelectChanged-Event. And i need the information from the Selected Row.

In your Forum i found a older Solution, but it wont work with the actual Telerik-Build.

Thank you

Nick
Telerik team
 answered on 15 Nov 2011
0 answers
246 views

Hello Telerik team,

When a user enters a value in the editable textbox of the RadCombobox that doesn't matches any of the available list of items then though the selected value is set to null , the text remains in the editable textbox even on lost focus of the RadCombobox.

I have a requirement where I have to perform a validation when the user tabs out of the editable RadCombobox or tries to click on a different control. The validation is to verify if the text entered by the user is available in the list of items and if not then alert the user of this and open the dropdown.

I implemented this validation on PreviewLostKeyboardFocus event as given below. But the problem is this event gets fired even when the focus enters the RadCombobox.

After the Ok button of the alert is clicked and then when I try to click of the dropdown's button, this event gets fired again and so the alert.

Why does this event fires when the focus enters the radcombobox.

Could you please guide me.

private void radCmbCustomer_PreviewLostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
        {
            if ((sender as RadComboBox) != null
                && ((sender as RadComboBox).ItemsSource as Customer[]) != null)
            {
                Customer[] larrCustomer = ((sender as RadComboBox).ItemsSource as Customer[]);
  
                /*Check if the code entered by the user*/
                TextBox txtEditableTextBoxRadCmbCustomer = radCmbCustomer.Template.FindName("PART_EditableTextBox", radCmbCustomer) as TextBox;
  
                if (txtEditableTextBoxRadCmbCustomer != null)
                {
                    string lstrCustomer = txtEditableTextBoxRadCmbCustomer.Text;
  
                    if (lstrCustomer != null && !lstrCustomer.Trim().Equals(string.Empty))
                    {
                        var lvarCustomerRecordsMatched = from lobjCustomer in larrCustomer
                                                        where lobjCustomer.CustomerName.ToUpper() == lstrCustomer.ToUpper()
                                                        select lobjCustomer;
  
                        if (lvarCustomerRecordsMatched != null && lvarCustomerRecordsMatched.ToList<Customer>().Count <= 0)
                        {
                            MessageBox.Show("The text you entered isn't an item in the list. \nSelect an item from the list, or enter text that matches one of the listed items.", "Alert");
  
                            radCmbCustomer.IsDropDownOpen = true;
                            txtEditableTextBoxRadCmbCustomer.Focus();
                            e.Handled = true;
                            return; 
             }
                    }
                }
            }


Thanks,
Regards,
Mausami


Mausami
Top achievements
Rank 1
 asked on 15 Nov 2011
Narrow your results
Selected tags
Tags
GridView
General Discussions
Chart
RichTextBox
Docking
ScheduleView
ChartView
TreeView
Diagram
Map
ComboBox
TreeListView
Window
RibbonView and RibbonWindow
PropertyGrid
DragAndDrop
TabControl
TileView
Carousel
DataForm
PDFViewer
MaskedInput (Numeric, DateTime, Text, Currency)
AutoCompleteBox
DatePicker
Buttons
ListBox
GanttView
PivotGrid
Spreadsheet
Gauges
NumericUpDown
PanelBar
DateTimePicker
DataFilter
Menu
ContextMenu
TimeLine
Calendar
Installer and Visual Studio Extensions
ImageEditor
BusyIndicator
Slider
Expander
TileList
PersistenceFramework
DataPager
Styling
TimeBar
OutlookBar
TransitionControl
Book
FileDialogs
ToolBar
ColorPicker
TimePicker
SyntaxEditor
MultiColumnComboBox
VirtualGrid
Wizard
ExpressionEditor
NavigationView (Hamburger Menu)
DesktopAlert
WatermarkTextBox
BarCode
SpellChecker
DataServiceDataSource
EntityFrameworkDataSource
RadialMenu
ChartView3D
Data Virtualization
BreadCrumb
ProgressBar
Sparkline
LayoutControl
TabbedWindow
ToolTip
CloudUpload
ColorEditor
TreeMap and PivotMap
EntityFrameworkCoreDataSource (.Net Core)
HeatMap
Chat (Conversational UI)
VirtualizingWrapPanel
Calculator
NotifyIcon
TaskBoard
TimeSpanPicker
BulletGraph
WebCam
CardView
DataBar
Licensing
FilePathPicker
PasswordBox
Rating
SplashScreen
Accessibility
Callout
CollectionNavigator
Localization
AutoSuggestBox
HighlightTextBlock
Security
TouchManager
StepProgressBar
VirtualKeyboard
Badge
OfficeNavigationBar
ExpressionParser
CircularProgressBar
SvgImage
PipsPager
SlideView
AI Coding Assistant
+? more
Top users last month
Jay
Top achievements
Rank 3
Bronze
Iron
Iron
yw
Top achievements
Rank 2
Iron
Iron
Stefan
Top achievements
Rank 2
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Jay
Top achievements
Rank 3
Bronze
Iron
Iron
yw
Top achievements
Rank 2
Iron
Iron
Stefan
Top achievements
Rank 2
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?