Setting RadCombobox ItemsSource at runtime for EditorTemplate

2 posts, 0 answers
  1. Mano Sadeh
    Mano Sadeh avatar
    8 posts
    Member since:
    May 2010

    Posted 08 Oct 2014 Link to this post

    Hey,

    We are trying to use RadPropertyGrid for a configurable application where we don't know the objects at design time. At runtime we are using PropertyDefinition for each field. This is working well except when we need to create a RadComboBox and assign the ItemsSource at runtime. This is the function to create the "Generic" DataTemplate and the only question we have is how to set the ItemsSource on the newly created RadComboBox (it is the codedValueDomain parameter).

    Thanks,
    Mano

    private DataTemplate GetDataTemplate(Esri.ArcGISRuntime.Data.FieldInfo fieldInfo, CodedValueDomain codedValueDomain)
    {
     
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.Append("<DataTemplate ");
        stringBuilder.Append("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' ");
        stringBuilder.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
        stringBuilder.Append("xmlns:telerik='http://schemas.telerik.com/2008/xaml/presentation'>");
     
        if (codedValueDomain != null)
            stringBuilder.Append(string.Format(@"<telerik:RadComboBox Name=""comboBox"" SelectedValue=""{{Binding Attributes[{0}], Mode=TwoWay}}"" DisplayMemberPath=""Value"" SelectedValuePath=""Key"" HorizontalAlignment=""Stretch"" />", fieldInfo.Name));
        else if (fieldInfo.Type == FieldType.Integer || fieldInfo.Type == FieldType.Double || fieldInfo.Type == FieldType.SmallInteger || fieldInfo.Type == FieldType.Single)
            stringBuilder.Append(string.Format(@"<telerik:RadNumericUpDown Value=""{{Binding Attributes[{0}], Mode=TwoWay}}"" HorizontalAlignment=""Stretch""/>", fieldInfo.Name));
        else if (fieldInfo.Type == FieldType.Date)
            stringBuilder.Append(string.Format(@"<telerik:RadDateTimePicker SelectedValue=""{{Binding Attributes[{0}], Mode=TwoWay}}"" HorizontalAlignment=""Stretch"" InputMode=""DatePicker""/>", fieldInfo.Name));
        else
            stringBuilder.Append(string.Format(@"<telerik:RadMaskedTextInput Value=""{{Binding Attributes[{0}], Mode=TwoWay}}"" TextMode=""PlainText"" Mask="""" HorizontalAlignment=""Stretch""/>", fieldInfo.Name));
     
        stringBuilder.Append("</DataTemplate>");
     
        DataTemplate dataTemplate = System.Windows.Markup.XamlReader.Parse(stringBuilder.ToString()) as DataTemplate;
     
        return dataTemplate;
     
    }
  2. Dimitrina
    Admin
    Dimitrina avatar
    3769 posts

    Posted 13 Oct 2014 Link to this post

    Hi Mano,

    Have you tried specifying a proper Binding for the RadComboBox.ItemsSource? In that case you should also ensure it will be correctly resolved. For the purpose, you can try defining your ViewModel as a StaticResource and then set it as a Source for the Binding of child RadGridView. You can also check the Binding.Source Property as a reference.

    Regards,
    Dimitrina
    Telerik
     

    Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.

     
  3. UI for WPF is Visual Studio 2017 Ready
Back to Top