Telerik Forums
UI for WPF Forum
8 answers
187 views
Hi,

We are considering using the Telerik control suite for our project but one issue which is of extreme importance to us is Localization.

We understand that your Winforms controls supoprt Right To Left languages and we were wondering if the same were true for your WPF and Silverlight controls.
 
We understand that this might be a naive question as we have not really looked into Localization for XAML based applications so we don't really know how it is done.

For our current product we already have customers in the Middle East however they are geting by on the English version of the application as the technology used is not localizable.  Our new product will be written using C# and probably Winforms but we have not completely decided which way to go between WPF and  Windforms yet.
 
The main reason for asking this question is that you explicitly state that your Windforms Controls support Right to Left languages but we could not find any similar statement for the WPF controls. Just wanting to put our minds at rest that we will not run into problems later on in our project.

Regards
Jim
Daze507
Top achievements
Rank 1
 answered on 28 Jan 2010
1 answer
117 views
I've added an event handler for drag and drop to the tile view, but when I move the TileViewItems the event is not fired. Is there another event that is being fired when the items' order is changing?

Thanks,
Michael
Tihomir Petkov
Telerik team
 answered on 28 Jan 2010
1 answer
64 views

Hi all,

I'm trying to apply the telerik themes in a chart. When I use the Office Blue the labels appears in White and I don't like it... how can I customize this property like black color? Any code sample?

Many thanks in advance.

Dwight
Telerik team
 answered on 28 Jan 2010
1 answer
71 views
Hi there,

I tried to restyle the legend of my chart area.
I have two styles to define. First one is, that the legend only appears when a togglebutton (outside of the chart) is clicked. The legend position is over the whole size of the chart. For this reason i override the chart template as follows:
<ControlTemplate x:Key="_chartControlTemplate" TargetType="{x:Type telerik:RadChart}">                 
 <Grid Background="{TemplateBinding Background}"
  <Grid x:Name="PART_DefaultLayoutGrid"
   <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto"/> 
   </Grid.ColumnDefinitions> 
   <Grid.RowDefinitions> 
    <RowDefinition Height="Auto"/> 
    <RowDefinition Height="*"/> 
   </Grid.RowDefinitions> 
   <ContentPresenter x:Name="PART_DefaultChartTitleContainer" Grid.Column="0" Grid.Row="0" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" ContentTemplate="{TemplateBinding ContentTemplate}"/> 
   <ContentPresenter x:Name="PART_DefaultChartAreaContainer" Grid.Column="0" Grid.Row="1" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" ContentTemplate="{TemplateBinding ContentTemplate}"/> 
   <ContentPresenter x:Name="PART_DefaultChartLegendContainer" Grid.Column="0" Grid.Row="0" Grid.RowSpan="2" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Visibility="{Binding ElementName=LegendVisibilityButton, Path=IsChecked, Converter={StaticResource legendConverter}}"/> 
  </Grid> 
  <ContentPresenter Height="Auto" Width="Auto" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" ContentTemplate="{TemplateBinding ContentTemplate}"/> 
 </Grid> 
</ControlTemplate> 

The second style is, that the legend is placed between the title and the chartarea.
Therefore i override the chart template and set the legendstyle to the chart:
<ControlTemplate x:Key="_chartControlTemplate" TargetType="{x:Type telerik:RadChart}">                 
 <Grid Background="{TemplateBinding Background}"
  <Grid x:Name="PART_DefaultLayoutGrid"
   <Grid.ColumnDefinitions> 
    <ColumnDefinition Width="Auto"/> 
   </Grid.ColumnDefinitions> 
   <Grid.RowDefinitions> 
    <RowDefinition Height="Auto"/> 
    <RowDefinition Height="Auto"/> 
    <RowDefinition Height="*"/> 
   </Grid.RowDefinitions> 
   <ContentPresenter x:Name="PART_DefaultChartTitleContainer" Grid.Column="0" Grid.Row="0" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" ContentTemplate="{TemplateBinding ContentTemplate}"/> 
   <ContentPresenter x:Name="PART_DefaultChartAreaContainer" Grid.Column="0" Grid.Row="2" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" ContentTemplate="{TemplateBinding ContentTemplate}"/> 
   <ContentPresenter x:Name="PART_DefaultChartLegendContainer" Grid.Column="0" Grid.Row="1" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" Visibility="{Binding ElementName=LegendVisibilityButton, Path=IsChecked, Converter={StaticResource legendConverter}}"/> 
  </Grid> 
  <ContentPresenter Height="Auto" Width="Auto" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" ContentTemplate="{TemplateBinding ContentTemplate}"/> 
 </Grid> 
</ControlTemplate> 

<
Style x:Key="_chartLegendStyle" TargetType="{x:Type telerik:ChartLegend}"
 <Setter Property="Template"
   . 
   . 
   . 
 <Setter.Value> 
 <Setter Property="ItemsPanel"
  <Setter.Value> 
   <ItemsPanelTemplate > 
    <StackPanel IsItemsHost="True" Orientation="Horizontal"/> 
   </ItemsPanelTemplate> 
  </Setter.Value> 
 </Setter> 
 <Setter Property="HeaderTemplate"
    . 
    . 
    . 
 </Setter> 
</Style> 

Everything works fine except the height of the legend. In both cases the height is filled to any fixed size. I want to set the height of the legend to auto that it just uses the space it needs. Therefore I tried to override the VerticalAlignment to Center as the MinHeight to 100 but nothing seems to be working.

Maybe this is the same issue I have with the size of the chart it self. I am not able to stlye the view that contains the chart that it shrinks with the window. Growing seems to have no problem but shrinking is not possible. (Defaultsize of the chart is around 600x800)
Giuseppe
Telerik team
 answered on 28 Jan 2010
2 answers
145 views

Whenever I attempt to remove a group from the grid grouping area, either by dragging or clicking the 'close' button, an exception occurs.

I am using Q3 SP2 and VS2010 project (.NET4)
I have tried the same code in a .NET 3.5 project and the exception does not occur.

InvalidCastException:
Unable to cast object of type 'MS.Internal.NamedObject' to type 'Telerik.Windows.Data.GroupDescriptor'.

   at Telerik.Windows.Data.GroupDescriptor.Equals(Object obj) in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Core\Data\Data\Grouping\GroupDescriptor.cs:line 191
   at System.Object.Equals(Object objA, Object objB)
   at System.Windows.Data.BindingExpression.OnDataContextChanged(DependencyObject contextElement)
   at System.Windows.Data.BindingExpression.HandlePropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpressionBase.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.Data.BindingExpression.OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
   at System.Windows.DependentList.InvalidateDependents(DependencyObject source, DependencyPropertyChangedEventArgs sourceArgs)
   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.TreeWalkHelper.OnInheritablePropertyChanged(DependencyObject d, InheritablePropertyChangeInfo info)
   at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
   at System.Windows.DescendentsWalker`1.VisitNode(FrameworkElement fe)
   at System.Windows.DescendentsWalker`1.VisitNode(DependencyObject d)
   at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
   at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
   at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
   at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
   at System.Windows.DescendentsWalker`1.VisitNode(FrameworkElement fe)
   at System.Windows.DescendentsWalker`1.VisitNode(DependencyObject d)
   at System.Windows.DescendentsWalker`1.WalkLogicalChildren(FrameworkElement feParent, FrameworkContentElement fceParent, IEnumerator logicalChildren)
   at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
   at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
   at System.Windows.DescendentsWalker`1._VisitNode(DependencyObject d)
   at System.Windows.DescendentsWalker`1.VisitNode(FrameworkElement fe)
   at System.Windows.DescendentsWalker`1.VisitNode(DependencyObject d)
   at System.Windows.DescendentsWalker`1.WalkFrameworkElementLogicalThenVisualChildren(FrameworkElement feParent, Boolean hasLogicalChildren)
   at System.Windows.DescendentsWalker`1.IterateChildren(DependencyObject d)
   at System.Windows.DescendentsWalker`1.StartWalk(DependencyObject startNode, Boolean skipStartNode)
   at System.Windows.TreeWalkHelper.InvalidateOnInheritablePropertyChange(FrameworkElement fe, FrameworkContentElement fce, InheritablePropertyChangeInfo info, Boolean skipStartNode)
   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.Controls.ItemContainerGenerator.UnlinkContainerFromItem(DependencyObject container, Object item)
   at System.Windows.Controls.ItemContainerGenerator.OnItemRemoved(Object item, Int32 itemIndex)
   at System.Windows.Controls.ItemContainerGenerator.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
   at System.Windows.Controls.ItemContainerGenerator.System.Windows.IWeakEventListener.ReceiveWeakEvent(Type managerType, Object sender, EventArgs e)
   at System.Windows.WeakEventManager.DeliverEventToList(Object sender, EventArgs args, ListenerList list)
   at System.Windows.WeakEventManager.DeliverEvent(Object sender, EventArgs args)
   at System.Collections.Specialized.CollectionChangedEventManager.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
   at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
   at System.Windows.Data.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
   at System.Windows.Controls.ItemCollection.System.Windows.IWeakEventListener.ReceiveWeakEvent(Type managerType, Object sender, EventArgs e)
   at System.Windows.WeakEventManager.DeliverEventToList(Object sender, EventArgs args, ListenerList list)
   at System.Windows.WeakEventManager.DeliverEvent(Object sender, EventArgs args)
   at System.Collections.Specialized.CollectionChangedEventManager.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
   at System.Windows.Data.CollectionView.OnCollectionChanged(NotifyCollectionChangedEventArgs args)
   at System.Windows.Data.ListCollectionView.ProcessCollectionChangedWithAdjustedIndex(NotifyCollectionChangedEventArgs args, Int32 adjustedOldIndex, Int32 adjustedNewIndex)
   at System.Windows.Data.ListCollectionView.ProcessCollectionChanged(NotifyCollectionChangedEventArgs args)
   at System.Windows.Data.CollectionView.OnCollectionChanged(Object sender, NotifyCollectionChangedEventArgs args)
   at System.Collections.Specialized.NotifyCollectionChangedEventHandler.Invoke(Object sender, NotifyCollectionChangedEventArgs e)
   at System.Collections.ObjectModel.ObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e)
   at Telerik.Windows.Data.RadObservableCollection`1.OnCollectionChanged(NotifyCollectionChangedEventArgs e) in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Core\Data\Collections\RadObservableCollection.cs:line 141
   at System.Collections.ObjectModel.ObservableCollection`1.RemoveItem(Int32 index)
   at Telerik.Windows.Data.RadObservableCollection`1.RemoveItem(Int32 index) in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Core\Data\Collections\RadObservableCollection.cs:line 212
   at Telerik.Windows.Data.ObservableItemCollection`1.RemoveItem(Int32 index) in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Core\Data\Collections\ObservableItemCollection.cs:line 68
   at System.Collections.ObjectModel.Collection`1.Remove(T item)
   at Telerik.Windows.Controls.GridView.GridViewDataControl.Ungroup(String member) in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Controls\GridView\GridView\GridView\GridViewDataControl.cs:line 3302
   at Telerik.Windows.Controls.GridView.GridViewDataControl.<>c__DisplayClass2a.<GroupingRequested>b__29() in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Controls\GridView\GridView\GridView\GridViewDataControl.cs:line 3196
   at Telerik.Windows.Controls.CursorManager.PerformTimeConsumingOperation(FrameworkElement frameworkElement, Action action) in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Core\Controls\CursorManager.cs:line 16
   at Telerik.Windows.Controls.GridView.GridViewDataControl.GroupingRequested(Object origin, GroupingRequestedEventArgs e) in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Controls\GridView\GridView\GridView\GridViewDataControl.cs:line 3177


XAML

<Window  
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="WpfApplication1.MainWindow" 
    x:Name="Window" 
    Title="MainWindow" 
    Width="640" Height="480" 
    xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"   > 
 
    <Grid x:Name="LayoutRoot">  
        <telerik:RadGridView x:Name="grid">  </telerik:RadGridView> 
    </Grid> 
</Window> 

I used the code behind file for simplicity of testing:
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.Shapes;  
 
namespace WpfApplication1  
{  
    /// <summary>  
    /// Interaction logic for MainWindow.xaml  
    /// </summary>  
    public partial class MainWindow : Window  
    {  
        public List<DOStaff> col = new List<DOStaff>();  
          
        public MainWindow()  
        {  
              
            this.InitializeComponent();  
 
            // Insert code required on object creation below this point.  
                  
            DOStaff tempStaff = new DOStaff();  
            tempStaff.FirstName = "staf12399";  
              
            col.Add(tempStaff);   
          
            DOStaff tempStaff1 = new DOStaff();  
            tempStaff1.FirstName = "staf12399";  
              
            col.Add(tempStaff1);      
              
            grid.ItemsSource=col;  
              
        }  
    }  
      
    public class DOStaff  
    {  
        public virtual string FirstName { getset;}  
      
    }  
      
Pavel Pavlov
Telerik team
 answered on 28 Jan 2010
3 answers
209 views
Hello,

I would like to hide the Calender in a DatePicker and I would like
to set the focus to the Input Box.
If I use RadDatePicker.Focus() the Focus is set to the out control.

Do you have any idea?

Thanks a lot!
Kaloyan
Telerik team
 answered on 28 Jan 2010
11 answers
143 views
Hello!
I really like the RadDocking component and all it's features and I will like to use it in my application but I think it has a major drawback at this moment, or it's only me not knowing how to use it.
The problem:
When there is a RadPane undocked you can see a button that it's opening the RadPane if the mouse it's over it. Opening the RadPane is made with some kind of an ugly animation, for example if the pane is docked in the left side, the animation reveals it from left to right but slowly and clipping. Is there any way to disable this animation and only make the RadPane visible or not?
Not to mention that if in the DocumentHost I have a real time chart - as in my application, every time the chart has new data (redrawing itself), the RadPane is clipping ( again! :) still in undocked mode)

So for an application that is already requiring many resources I need a stable & robust component. Can you help me in that direction?

Regards,
RoxanaC
Kaloyan
Telerik team
 answered on 28 Jan 2010
5 answers
182 views
How do I achieve the following SeriesMapping in XAML?

ItemMapping itemMapping; 
 
            //ValueA Line 
            SeriesMapping seriesMappingA = new SeriesMapping(); 
            seriesMappingA.SeriesDefinition = new LineSeriesDefinition() { ShowItemLabels = false }; 
            seriesMappingA.LegendLabel = "ValueA Performance"
 
            itemMapping = new ItemMapping(); 
            itemMapping.DataPointMember = DataPointMember.XValue; 
            itemMapping.FieldName = "Date"
            seriesMappingA.ItemMappings.Add(itemMapping); 
 
            itemMapping = new ItemMapping(); 
            itemMapping.DataPointMember = DataPointMember.YValue; 
            itemMapping.FieldName = "ValueA"
            seriesMappingA.ItemMappings.Add(itemMapping); 
 
            RadChart1.SeriesMappings.Add(seriesMappingA); 
 
            //ValueB Line 
            SeriesMapping seriesMappingB = new SeriesMapping(); 
            seriesMappingB.SeriesDefinition = new LineSeriesDefinition() { ShowItemLabels = false }; 
            seriesMappingB.LegendLabel = "ValueB Performance"
 
            itemMapping = new ItemMapping(); 
            itemMapping.DataPointMember = DataPointMember.XValue; 
            itemMapping.FieldName = "Date"
            seriesMappingB.ItemMappings.Add(itemMapping); 
 
            itemMapping = new ItemMapping(); 
            itemMapping.DataPointMember = DataPointMember.YValue; 
            itemMapping.FieldName = "ValueB"
            seriesMappingB.ItemMappings.Add(itemMapping); 
 
            RadChart1.SeriesMappings.Add(seriesMappingB); 
 
            RadChart1.DefaultView.ChartArea.AxisX.LabelRotationAngle = 45; 
            RadChart1.DefaultView.ChartArea.AxisX.DefaultLabelFormat = "dd/MM/yyyy"

Jeffrey
Top achievements
Rank 1
 answered on 28 Jan 2010
4 answers
261 views
 

I Have a RadContextMenu in XAML in a RadTreeView that works fine. I dynamically load the tree items, and certain tree items I add a different Context menu, but it always opens the RadContextMenu in xaml. If I remove the xaml RadContextMenu ref, the dynamic ContextMenu loads.

So I guess is there a way to prevent every child from inheriting its parents context menu?

Thanks
TheLostLeaf
Top achievements
Rank 2
 answered on 27 Jan 2010
4 answers
346 views
Hi,

I'm trying to use the DataGridView control with a DataTemplate.    This bit seems ok at the moment.

I am planning on using a convertor to automatically select the CellStyle based on the value of the column.  I expect this shouldn't be too tricky.

What I am having problems with is trying to bind the content of the control to another cell's value.  Or using another cells value for a property. 

Any help/examples would be greatly appreciated.

Eg

Record
======

Name = "My Textbox"
Control = "Textbox"
Default = "This is my default value"

The Control Column will become a TextBox and I would like the TextBox Value to become the value of the Default,

I have tried things like

Text="{Binding Default}"
Text="{Binding Path=Default, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type telerik:GridViewRow}}}"

<UserControl x:Class="WizardAdvanced" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation">  
    <Grid> 
        <Grid.Resources> 
            <Style x:Key="CheckboxCellStyle" TargetType="{x:Type telerik:GridViewCell}">  
                <Setter Property="ContentTemplate">  
                    <Setter.Value> 
                        <DataTemplate> 
                            <CheckBox VerticalAlignment="Center" /> 
                        </DataTemplate> 
                    </Setter.Value> 
                </Setter> 
            </Style> 
            <Style x:Key="TextboxCellStyle" TargetType="{x:Type telerik:GridViewCell}">  
                <Setter Property="ContentTemplate">  
                    <Setter.Value> 
                        <DataTemplate> 
                            <TextBox Text="{Binding Default}" /> 
                        </DataTemplate> 
                    </Setter.Value> 
                </Setter> 
            </Style> 
            <Style x:Key="ListboxCellStyle" TargetType="{x:Type telerik:GridViewCell}">  
                <Setter Property="ContentTemplate">  
                    <Setter.Value> 
                        <DataTemplate> 
                            <ComboBox  HorizontalAlignment="Left" VerticalAlignment="Bottom"/>  
                        </DataTemplate> 
                    </Setter.Value> 
                </Setter> 
            </Style> 
        </Grid.Resources> 
          
        <telerik:RadGridView Margin="0" Name="Grid" AutoGenerateColumns="False">  
            <telerik:RadGridView.Columns> 
                <telerik:GridViewDataColumn Header="Name" DataMemberBinding="{Binding Name}"></telerik:GridViewDataColumn> 
                <telerik:GridViewDataColumn Header="Control" DataMemberBinding="{Binding Control}" CellStyle="{StaticResource TextboxCellStyle}"></telerik:GridViewDataColumn> 
                <telerik:GridViewDataColumn Header="Default" DataMemberBinding="{Binding Default}"></telerik:GridViewDataColumn> 
 
            </telerik:RadGridView.Columns> 
        </telerik:RadGridView> 
 
    </Grid> 
</UserControl> 
 
Pavel Pavlov
Telerik team
 answered on 27 Jan 2010
Narrow your results
Selected tags
Tags
+? more
Top users last month
Jay
Top achievements
Rank 3
Iron
Iron
Iron
Benjamin
Top achievements
Rank 3
Bronze
Iron
Veteran
Radek
Top achievements
Rank 2
Iron
Iron
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Richard
Top achievements
Rank 4
Bronze
Bronze
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Jay
Top achievements
Rank 3
Iron
Iron
Iron
Benjamin
Top achievements
Rank 3
Bronze
Iron
Veteran
Radek
Top achievements
Rank 2
Iron
Iron
Iron
Bohdan
Top achievements
Rank 2
Iron
Iron
Richard
Top achievements
Rank 4
Bronze
Bronze
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?