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
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;
}