Telerik Forums
UI for WPF Forum
1 answer
82 views
Hello :)

I have found a problem that goes like this:

I have a gridview that is bound to a observable collection of business objects.
The gridview properties:

<telerik:RadGridView x:Name="ReservasGridView"
                Margin="0"
        IsReadOnly="False" CanUserFreezeColumns="False" CanUserInsertRows="True"
        SelectionMode="Single" AutoGenerateColumns="False"
                IsFilteringAllowed="False" ShowGroupPanel="false" MaxHeight="768"
        IsSynchronizedWithCurrentItem="True"
>

Everything works as expected, but when I edit and commit an existing row, the first row of the gridview renders a few rows down. This not happens all the time, but it certainly happens, and I don't know why.

I have attached a jpg file showing this behavior.
I hope you can help me.

Best regards
Jorge
Vlad
Telerik team
 answered on 18 Mar 2011
2 answers
207 views
I would like to display the columns of a DataRow in more than one row of the GridView.

Something like

HeaderRow            Last Name        First Name
                                Phone                Email

Row 1                    Bill                    Smith
                                719-999-9999 Bill@jk.com

Row 2                    Joe                    Brown
                                203-000-0000 Joe@br.com

Thanks
Radha
James
Top achievements
Rank 1
 answered on 18 Mar 2011
1 answer
92 views
Hi there,

after updating to the q1 2011 release the interactivity feature is not working anymore. even in your controls demonstrating app.

please see attached screenshots.

picture 1: 2 countries are selected, nothing happens in the chart
picture 2: the mouse is over a red bar, no dimming of the others series

this bug occurs also in my own project using the chart component and 

var ds = new DataSeries();
ds.Definition.ShowItemToolTips = true;
ds.Definition.InteractivitySettings.HoverScope = InteractivityScope.Series;
ds.Definition.InteractivitySettings.SelectionScope = InteractivityScope.Series;

it works in the previous release. is this a bug or a feature? ^^

best wishes,

Giuseppe
Telerik team
 answered on 17 Mar 2011
1 answer
178 views

Hello,

per default the culture of the RadMaskedNumericInput is set to en-US, changing that to a suitable value initially is easy enough. But how do I use the system-culture instead?

Setting the culture for every single control (and there will be hundreds of them) when the program is started is hardly the way to go. I tried using the value "(Standard)" from the selection of cultures available in the culture-property, but that is not an excepted value for that property.

I'm currently using the trial version of the 2011 Q1 release.

Alex Fidanov
Telerik team
 answered on 17 Mar 2011
3 answers
89 views
Last night I downloaded and installed the RadControls for WPF 2011.1 315 (Mar 16, 2011). The upgrade wizard would not allow me to upgrade my project to this version, it would only allow me to select 2010 Q3, so I manually browsed to the DLLS and then upgrade from it. (C:\Program Files (x86)\Telerik\RadControls for WPF Q1 2011\Binaries\WPF)

Now, when I rebuild my project (which was working just fine) I get the following error:

System.NullReferenceException
Object reference not set to an instance of an object.
   at Telerik.Windows.Controls.TileViewPanel.UpdateScrollViewer() in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Controls\Navigation\TileView\TileViewPanel.cs:line 359
   at Telerik.Windows.Controls.TileViewPanel.MeasureOverride(Size availableSize) in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Controls\Navigation\TileView\TileViewPanel.cs:line 270
   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.ItemsPresenter.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.ScrollContentPresenter.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.ScrollViewer.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.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.Control.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 Telerik.Windows.Controls.TransitionControl.TransitionPresenter.MeasureOverride(Size availableSize) in c:\Builds\WPF_Scrum\Release_WPF\Sources\Development\Core\Controls\TransitionControl\TransitionPresenter.cs:line 321
   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.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.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.Controls.Border.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.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.Documents.AdornerDecorator.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.Border.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.DockPanel.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.Border.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at MS.Internal.Designer.ZoomableViewPresenter.DesignerBackground.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at System.Windows.Controls.Decorator.MeasureOverride(Size constraint)
   at Microsoft.Windows.Design.Interaction.DesignerView.MeasureOverride(Size constraint)
   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)
   at System.Windows.UIElement.Measure(Size availableSize)
   at MS.Internal.Designer.Viewport.MeasureOverride(Size availableSize)
   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.ScrollContentPresenter.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.ScrollViewer.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 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.Interop.HwndSource.SetLayoutSize()
   at System.Windows.Interop.HwndSource.set_RootVisualInternal(Visual value)
   at System.Windows.Interop.HwndSource.set_RootVisual(Visual value)
   at MS.Internal.DeferredHwndSource.ProcessQueue(Object sender, EventArgs e)

Regards,

Jeremy
Zarko
Telerik team
 answered on 17 Mar 2011
39 answers
485 views
Upgraded my VS 2008 WPF project (two, in fact) with the Q3 release today using the Upgrade Wizard. Now when I switch to the Design view of any page I get the following error:

Error   1   '/Telerik.Windows.Controls;component/Themes/GenericExpressionDark.xaml' value cannot be assigned to property 'Source' of object 'System.Windows.ResourceDictionary'. '/Telerik.Windows.Controls;Component/themes/Expression/Dark/BusyIndicator.xaml' value cannot be assigned to property 'Source' of object 'System.Windows.ResourceDictionary'. Could not load type 'Microsoft.Windows.Design.Metadata.ProvideMetadataAttribute' from assembly 'Microsoft.Windows.Design.Extensibility, Version=3.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. Line '142' Position '39'.  Error at object 'System.Windows.ResourceDictionary' in markup file 'Telerik.Windows.Controls;component/Themes/GenericExpressionDark.xaml'.  Error at object 'System.Windows.ResourceDictionary'.   C:\Documents and Settings\akedzier\My Documents\Visual Studio 2008\Projects\DSD_MissionsBoards\DSD_MissionsBoards\Scenes\Scene_07.xaml   104   33   DSD_MissionsBoards


I'm not using GenericExpressionDark.xaml anywhere in my project, so I'm just a little confused.

(WinXP SP3, VS2008 SP1, WPF 3.5)
Julio Colon
Top achievements
Rank 1
 answered on 17 Mar 2011
3 answers
81 views
Hi there, 

I am using a RadGridView, here is the XAML

<telerik:RadGridView Grid.Row="1"
                            Grid.ColumnSpan="3"
                            SelectionMode="Single"
                            IsReadOnly="True"
                            Name="radGridView1"
                            ItemsSource="{Binding Path=ModelCodeList}"
                            SelectedItem="{Binding Path=SelectedModel, Mode=TwoWay}"
                            AutoGenerateColumns="False"  >
           <telerik:RadGridView.Columns>
               <telerik:GridViewDataColumn DataMemberBinding="{Binding Code}" Header="Model"/>
               <telerik:GridViewDataColumn DataMemberBinding="{Binding ID}" Header="ID"/>
               <telerik:GridViewDataColumn DataMemberBinding="{Binding OemName}" Header="OEM Name"/>
               <telerik:GridViewDataColumn DataMemberBinding="{Binding ModalityCode}" Header="Modality Code"/>
               <telerik:GridViewDataColumn DataMemberBinding="{Binding Active}" Header="Model Active"/>
           </telerik:RadGridView.Columns>
       </telerik:RadGridView>

As you can see I am binding the selected item, I followed the example from the code download in this (http://www.telerik.com/community/forums/wpf/gridview/select-a-row-from-viewmodel.aspx) post. I works the first time no problem... I put a breakpoint in my view model and I can see my SelectedModel getting set. The problem is that I can't unselect the first item and have it set the second item. At this point I am stuck - here is the pertinent code from the view model.

public Model SelectedModel
   {
     get { return selectedModel; }
     set
     {
       if (selectedModel != value)
       {
         selectedModel = value;
       }
       RaisePropertyChanged(() => this.SelectedModel);
       AddSelectedModelCommand.RaiseCanExecuteChanged();
     }
   }


What is does is keeps highlighting rows - even though I have SelectionMode="sinlge" - Uhm? Any suggestions? I attached a screen capture to show what I mean - see all the highlighted rows?

Thanks!

** Also - The only difference I can see between my project and the sample is that we are "Target Framework:" is set to ".NET Framework 4" and your project is being built as ".NET Framework 4 Client Profile"
Milan
Telerik team
 answered on 17 Mar 2011
3 answers
172 views

Hello,

I'm currently evaluating the trial version of RadControls for WPF 2010_3_1314.

I have found solutions for my other problems with the RadDateTimePicker, but couldn't find anything on opening the calender to the current date for the WPF version.

In my window I have a RadDateTimePicker to select the birth-date of a person, bound to the entity selected from a SQL-database.

When a new person is added it has no birth-date, as this is not a mandatory field.

In everyday use the calendar will hardly be needed, as it is simpler just to type the birth-date instead of navigating there.

However it would still be nice to open the calendar to the current date instead of 1/1/1800, the minimum allowed date I have set.

How can I open the calendar to the current date, without it actually being selected?

Thanks

Yana
Telerik team
 answered on 17 Mar 2011
1 answer
271 views
This is my code:
<telerik:RadComboBox Height="30" HorizontalAlignment="Left" Margin="126,63,0,0" Name="RadComboBox1" VerticalAlignment="Top" Width="262">
            <telerik:RadComboBoxItem Content="Item 1" />
            <telerik:RadComboBoxItem Content="Item 2" Visibility="Collapsed"/>
            <telerik:RadComboBoxItem Content="Item 3" />
        </telerik:RadComboBox>
But Item 2 not collapse.

Thanks,
Yana
Telerik team
 answered on 17 Mar 2011
3 answers
196 views

I have a completely dynamic RadTreeView that users can add items to. To add a child item, the user selects an existing item and presses a button to generate a new item under the currently selected item. All of that works fine, but the parent item doesn't expand to show the newly added item. I'm trying to get this to happen so that the user doesn't have to manually expand the parent after adding a child.  

This project is using MVVM and the tree items are all databound to an ObservableCollection of a custom class located in my View-Model. The currently selected item is also databound to a property in my View-Model that is of the same custom class as the ObservableCollection. 

Since I'm adding the new items to my tree through the databound property in the View-Model, I can't simply tell the parent to expand from there because it has no access to the UI elements. Immediately after I create the new item I set it in the View-Model as the currently selected item. I figure this will trigger the SelectionChanged event on the RadTreeView (which it does)  so my idea is to try and expand the parent of the currently selected item from there. 

The problem there is that I can't get anything working properly in the SelectionChanged event.

The "SelectionChangedEventArgs" Source property only gives me an object of the custom class type. Obviously that doesn't allow me to change the IsExpanded property. Whenever I try to cast the Source property as a RadTreeViewItem it always returns null. Similarly I have also tried iterating through the RadTreeView itself, but that does the same thing. I can easily get the object of the custom class from the View-Model, but nothing I try gives me the RadTreeViewItem for me to expand. 

I've messed around with the GetItemByPath and ExpandItemByPath methods, but it is completely possible for items in my tree to have the exact same name. In that case, how would those methods know which path is the right path? I don't think those will work for me.

I have also tried the code here, specifically this:

private void radTreeView_SelectionChanged( object sender, Telerik.Windows.Controls.SelectionChangedEventArgs e )
{
   // Get a reference to the treeview
   Telerik.Windows.Controls.RadTreeView treeView = sender as Telerik.Windows.Controls.RadTreeView;
   // Get the currently selected items
   ObservableCollection<Object> selectedItems = treeView.SelectedItems;
   RadTreeViewItem item = selectedItems[ 0 ] as RadTreeViewItem;
}

However, as I mentioned before, "item" is always coming out null. If I instead cast it to my custom class, item holds the correct data and I can get the parent item, but is not a RadTreeViewItem for me to expand.

Thanks in advance for any help...

Petar Mladenov
Telerik team
 answered on 17 Mar 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
Expander
Slider
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
Licensing
WebCam
CardView
DataBar
FilePathPicker
PasswordBox
Rating
SplashScreen
Accessibility
Callout
CollectionNavigator
Localization
AutoSuggestBox
VirtualKeyboard
HighlightTextBlock
Security
TouchManager
StepProgressBar
Badge
OfficeNavigationBar
ExpressionParser
CircularProgressBar
SvgImage
PipsPager
SlideView
AI Coding Assistant
+? more
Top users last month
Ambisoft
Top achievements
Rank 2
Iron
Pascal
Top achievements
Rank 2
Iron
Matthew
Top achievements
Rank 1
Sergii
Top achievements
Rank 1
Iron
Iron
Andrey
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Ambisoft
Top achievements
Rank 2
Iron
Pascal
Top achievements
Rank 2
Iron
Matthew
Top achievements
Rank 1
Sergii
Top achievements
Rank 1
Iron
Iron
Andrey
Top achievements
Rank 1
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?