Telerik Forums
UI for WPF Forum
1 answer
173 views
Hi, guys!
I got unhandled exception: 

System.NullReferenceException was unhandled
  Message=Object reference not set to an instance of an object.
  Source=Telerik.Windows.Documents
  StackTrace:
       at Telerik.Windows.Documents.DocumentStructure.DocumentStructureCollection.GetNextSiblingForDocumentElementOnSameLevel(LayoutBox box, DocumentElement owner) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\DocumentStructure\DocumentStructureCollection.cs:line 896
       at Telerik.Windows.Documents.Model.DocumentElementCollection.<GetEnumerator>d__0.MoveNext() in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Model\DocumentElementCollection.cs:line 254
       at Telerik.Windows.Documents.Model.DocumentElement.<EnumerateChildrenOfType>d__0`1.MoveNext() in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Model\DocumentElement.cs:line 377
       at Telerik.Windows.Documents.Model.DocumentElement.<EnumerateChildrenOfType>d__0`1.MoveNext() in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Model\DocumentElement.cs:line 379
       at Telerik.Windows.Documents.Model.DocumentElement.<EnumerateChildrenOfType>d__0`1.MoveNext() in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Model\DocumentElement.cs:line 379
       at Telerik.Windows.Documents.Model.DocumentElement.<EnumerateChildrenOfType>d__0`1.MoveNext() in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Model\DocumentElement.cs:line 379
       at Telerik.Windows.Documents.Model.DocumentElement.<EnumerateChildrenOfType>d__0`1.MoveNext() in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Model\DocumentElement.cs:line 379
       at Telerik.Windows.Documents.Model.DocumentElement.<EnumerateChildrenOfType>d__0`1.MoveNext() in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Model\DocumentElement.cs:line 379
       at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
       at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
       at Telerik.Windows.Documents.Layout.SectionLayoutBox.GetEndnotesForSection(RadDocument doc, Section section) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Layout\SectionLayoutBox.cs:line 358
       at Telerik.Windows.Documents.Layout.SectionLayoutBox.MeasureOverride(SizeF availableSize) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Layout\SectionLayoutBox.cs:line 300
       at Telerik.Windows.Documents.Layout.LayoutElement.MeasureCore(SizeF availableSize) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Layout\LayoutElement.cs:line 929
       at Telerik.Windows.Documents.Layout.LayoutElement.Measure(SizeF availableSize) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Layout\LayoutElement.cs:line 832
       at Telerik.Windows.Documents.Layout.DocumentLayoutBox.MeasureOverrideInternal(SizeF availableSize) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Layout\DocumentLayoutBox.cs:line 190
       at Telerik.Windows.Documents.Layout.DocumentLayoutBox.MeasureOverride(SizeF availableSize) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Layout\DocumentLayoutBox.cs:line 144
       at Telerik.Windows.Documents.Layout.LayoutElement.MeasureCore(SizeF availableSize) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Layout\LayoutElement.cs:line 929
       at Telerik.Windows.Documents.Layout.LayoutElement.Measure(SizeF availableSize) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Layout\LayoutElement.cs:line 832
       at Telerik.Windows.Documents.Model.RadDocument.Measure(SizeF measureSize) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\Model\RadDocument.cs:line 1066
       at Telerik.Windows.Documents.UI.DocumentPrintLayoutPresenter.MeasureOverride(Size availableSize) in c:\TB\102\WPF_Scrum\Release_WPF\Sources\Development\Documents\Core\UI\DocumentPrintLayoutPresenter.cs:line 670
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
       at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at System.Windows.Controls.Control.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
       at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)
       at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at System.Windows.Controls.Border.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at System.Windows.Controls.Control.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)
       at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)
       at System.Windows.Controls.Grid.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)
       at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at System.Windows.Documents.AdornerDecorator.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at System.Windows.Controls.Border.MeasureOverride(Size constraint)
       at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
       at System.Windows.UIElement.Measure(Size availableSize)
       at System.Windows.Window.MeasureOverrideHelper(Size constraint)
       at System.Windows.Window.MeasureOverride(Size availableSize)
       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.Application.RunDispatcher(Object ignore)
       at System.Windows.Application.RunInternal(Window window)
       at System.Windows.Application.Run(Window window)
       at System.Windows.Application.Run()
       at WpfApplication6.App.Main() in c:\users\yuliak\documents\visual studio 2010\Projects\WpfApplication6\WpfApplication6\obj\x86\Debug\App.g.cs:line 0
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(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.Threading.ThreadHelper.ThreadStart()


My XAML:
<Window x:Class="WpfApplication6.MainWindow"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <telerik:RadRichTextBox x:Name="viewer" Grid.Row="0" IsReadOnly="true" LayoutMode="Paged"/>
        <Button Grid.Row="1" Click="Button_Click">Load File</Button>
    </Grid>
</Window>

 

My Code:

private void LoadDocument(string path)
       {
           try
           {
 
               using (var stream = new FileStream(path, FileMode.Open))
               {
                   IDocumentFormatProvider provider = new HtmlFormatProvider();
 
                   RadDocument document = provider.Import(stream);
                   viewer.CommandError += OnCommandError;
                   viewer.Document = document;
               }
 
           }
           catch (Exception)
           {
 
               string str = "";
           }
       }

File HTML (code) - please save as file HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<body>
  <table cellpadding="0" cellspacing="0" border="0" width="100%" class="outer" style="position: relative;">
    <tbody>
      <tr>
        <td>
            <table align="center" cellpadding="0" cellspacing="0" border="0" width="670" style="border: 0px; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; background-color: #ffffff;position: relative;">   
          <tbody>
                 <td rowspan="3"></td>
              </tbody>
 
            </table>
        </td>
       <td rowspan="3"></td>
     </tr>
     </tbody>
    </table>
 </body>
</html>
Mihail
Telerik team
 answered on 07 Feb 2013
3 answers
264 views
I have set the AutoComplete feature for the RadCombobox and this feature while typing a single letter also triggers the selectionchanged.  In my scenario, I want to decide after I finished searching for the element I need and then trigger the selectionchanged event.  Is it possible?
George
Telerik team
 answered on 07 Feb 2013
5 answers
240 views
I have a user control with a RadDataForm. It has a button that is bound to a command that calls radDataForm.AddNewItem().

I'm using the control in two places. In one of them things are working fine. In the other, AddNewItem() is returning false.

Clearly I am doing something wrong, but I'm having the hardest time figuring out what.

Is there anyplace I could look to figure out exactly why AddNewItem() is deciding not to add a new item?  Is there some way of turning on some sort of logging trace?
Maya
Telerik team
 answered on 07 Feb 2013
1 answer
189 views
I am adding annotations to ChartView and one of the required functionality is to drag the annotations, how can I get hold of the ChartViews Canvas inorder to use implement my own drag functionallity. If not, is there any other way to do this?

Thanks

Petar Kirov
Telerik team
 answered on 07 Feb 2013
3 answers
431 views
Hello,

I have a gridview with the set of columns shown below.  The first two columns have AggregateFunctions (sum).  I have a third column which should be the the result of dividing VacantSpaceRentableArea by TotalArea. I need this to be inside a custom aggregate function as the totals need to be recalculated as users group data by different columns. 

I have seen the examples of custom aggregate functions but all the examples I have seen refer only one column.  Is there any way to implement a custom aggregate function that references more than one column?

Thanks.

Edwin


<

 

 

telerik:GridViewDataColumn Header="Total Area" DataMemberBinding="{Binding TotalArea}" IsReadOnly="True"  DataFormatString="N0">

 

 

 

 

    <telerik:GridViewDataColumn.AggregateFunctions>

 

 

 

 

        <telerik:SumFunction Caption="Total Area: "/>

 

 

 

 

    </telerik:GridViewDataColumn.AggregateFunctions>

 

 

 

 

</telerik:GridViewDataColumn>

 

 

 

 

<telerik:GridViewDataColumn Header="Vac. Space Rentable Area" DataMemberBinding="{Binding VacantSpaceRentableArea}" IsReadOnly="True" DataFormatString="N0">

 

 

 

 

    <telerik:GridViewDataColumn.AggregateFunctions>

 

 

 

 

        <telerik:SumFunction Caption="Total Rentable Area: "/>

 

 

 

 

    </telerik:GridViewDataColumn.AggregateFunctions>

 

 

 

 

</telerik:GridViewDataColumn>

 

 

 

 


<
telerik:GridViewDataColumn Header="Vac. % Based on Rentable Area" DataMemberBinding="{Binding VacancyPctOfRentableArea}" IsReadOnly="True" DataFormatString="P2">

 

 

 

 

<!-- Need custom aggregate function here that will calculate VacantSpaceRentableArea / TotalArea -->

 

 

 

 

</telerik:GridViewDataColumn>

 

Andy
Top achievements
Rank 1
 answered on 06 Feb 2013
7 answers
250 views
Hi, so I'm in this event I need the old value to do some evaluation, but instead, I get the NewValue on both objects:

private void treeViewExperimentExplorer_Edited(object sender, RadTreeViewItemEditedEventArgs e) 
    string newName = e.NewValue.ToString(); 
    string oldName = e.OldValue.ToString(); 

In there both newName and oldName have the new value. How can I get the previous value in there?

Thanks!
Albert
Top achievements
Rank 1
 answered on 06 Feb 2013
1 answer
172 views
Hi, all!
I have a task to display document from html in RadRichTextBox, but without any working links, with prevention of loading smth. from internet (for example displaying images with url source) and disabling any script. How can I reach this purpose?
I tried HtmlFormatProvider.Import() with RadDocument , and HtmlDataProvider in XAML. Please help.
Yulia.
Petya
Telerik team
 answered on 06 Feb 2013
1 answer
109 views
We're currently using the 2012 Q1 version of Telerik Controls for WPF (or at least the DLL's version number is 2012.1.326.40). I am trying to style the control with Visual Studio 2012 using the designer by copying the existing control template. The RadDataPager's NumericElementsPresenter has a white background that we would rather have as transparent.

Unfortunately, every time I try to edit the existing template/style for the NumericElementsPresenter (and set the style tag to point to the resource) all of the buttons disappear and/or it starts using the Office theme instead of Metro. It also appears that the Metro theme colors are not being used, and I do not want to manually replace all of those colors in the template.

Is there a way to remove the white background from the NumericElementsPresenter and/or successfully create a copy of the current Metro template? Ideally the background would use a templatebinding and inherit the control's background instead.
Vanya Pavlova
Telerik team
 answered on 06 Feb 2013
1 answer
121 views
Is it possible to export a chartview to excel?
Petar Kirov
Telerik team
 answered on 06 Feb 2013
1 answer
131 views
I am no expert in WPF.  I have only been using it for a year or so and I probably don't use all the proper techniques.  However I have come across a few things I just can NOT get resolved with the gridview.

Scenario:
Grid A contains documents
Grid B is a hierarchical grid that contains transactions and documents that are associated to the transactions.

1) I want to be able to do drag and drop between two grids.  I found a few sample that seemed to work to do this but nothing like what I need.  All the samples seemed to revolve around reordering or something of that nature.  What I need to do is drag a row from my document grid and associate it to a transaction in Grid B.  I can't seem to find any examples that show the capture of the row that the source is being dropped on.  This is required in order for me to be able to know which transaction to associate the document to.  Can someone please provide an example of this?

2) In Grid B, I need to be able to select a row in the child grid and remove it.  I have created a context menu on the child grid, but I had a devil of a time trying to figure out which row(s) were selected in the child grid.  I ended up listening for the contextmenuOpen and contextmenuClose events for the child grid and setting a member variable to the selectedItems in the open and back to null on the close.  Is there a better way to do this?

public static RoutedCommand RemoveRemitDocCommand = new RoutedCommand();
private ObservableCollection<object> selectedItems = null;
private void gvwChildDocs_ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
    selectedItems = ((RadGridView)sender).SelectedItems;
}
  
private void gvwChildDocs_ContextMenuClosing(object sender, ContextMenuEventArgs e)
{
    selectedItems = null;
  
}
  
private void RemoveRemitDoc_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
    e.CanExecute = (selectedItems != null);
    e.Handled = true;
}
  
private void RemoveRemitDoc_Executed(object sender, ExecutedRoutedEventArgs e)
{
   //Do Something
}

3) I need to be able to set a converter on my GridB for the background of the row.  At first I wanted to just set the color if there were documents associated to the transaction.  I did this by binding the collection on the transaction to the converter value and in the converter I checked the count > 0 and returned a color accordingly.  This worked fine.  But of course you know how managers are.  Now they want to check the amounts from the documents vs the amount of the transaction.  So I bound the RelativeSource =self to the converter and changed my logic accordingly.  However, now the converter is called and works perfectly the first time, but if you sort the grid or filter it, then the converter is not called for the new order of rows and the colors are all wrong.  here is my code:
Xaml:
<telerik:RadGridView.RowStyle>
                    <Style TargetType="telerik:GridViewRow">
                        <Setter Property="Background" Value="{Binding RelativeSource={RelativeSource Self},Converter={StaticResource DocColorConverter}}"></Setter>
                    </Style>
                </telerik:RadGridView.RowStyle>
Converter:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            bankTransaction bt = ((GridViewRow)value).Item as bankTransaction;
            if (bt.transactionDocuments.Count > 0)
            {
                decimal tot = bt.transactionDocuments.Select(i => i.amtOwed).Sum();
 
                if (tot == bt.amount)
                    return new SolidColorBrush(Colors.LightGreen);
                else if (tot < bt.amount)
                    return new SolidColorBrush(Colors.Yellow);
                else
                    return new SolidColorBrush(Colors.Red);
            }
            else
                return new SolidColorBrush(Colors.Transparent);
        }

Those are my three problems and I need any and all help available.  Examples work best for me or corrections to my code above.  Either way is great.
Nick
Telerik team
 answered on 06 Feb 2013
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
Expander
Slider
TileList
DataPager
PersistenceFramework
Styling
TimeBar
OutlookBar
TransitionControl
FileDialogs
Book
ToolBar
ColorPicker
TimePicker
MultiColumnComboBox
SyntaxEditor
VirtualGrid
NavigationView (Hamburger Menu)
Wizard
ExpressionEditor
WatermarkTextBox
DesktopAlert
BarCode
SpellChecker
DataServiceDataSource
EntityFrameworkDataSource
RadialMenu
ChartView3D
Data Virtualization
BreadCrumb
LayoutControl
ProgressBar
Sparkline
TabbedWindow
ToolTip
CloudUpload
ColorEditor
TreeMap and PivotMap
EntityFrameworkCoreDataSource (.Net Core)
HeatMap
Chat (Conversational UI)
VirtualizingWrapPanel
Calculator
NotifyIcon
TaskBoard
TimeSpanPicker
BulletGraph
Licensing
WebCam
CardView
DataBar
FilePathPicker
Callout
PasswordBox
SplashScreen
Localization
Rating
Accessibility
CollectionNavigator
AutoSuggestBox
Security
VirtualKeyboard
HighlightTextBlock
TouchManager
StepProgressBar
Badge
OfficeNavigationBar
ExpressionParser
CircularProgressBar
SvgImage
PipsPager
SlideView
AI Coding Assistant
+? more
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Simon
Top achievements
Rank 2
Iron
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Marco
Top achievements
Rank 4
Iron
Iron
Iron
Grant
Top achievements
Rank 3
Iron
Iron
Iron
Kao Hung
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?