The CollectionEditor control has a resize functionality which allows you to drag its bottom right cornet, which changes the Width and Height of the root element in the ControlTemplate of the CollectionEditor. When hosted in CollectionEditorPicker, the CollectionEditor is placed in a RadDropDownButton's DropDownContent which is basically a Popup with Placement=Bottom. When the popup goes near the bottom edge of the screen, thus doesn't having enough height to render all its contents, the Popup is automatically re-positioned so it aligns top to its parent element (the RadDropDownButton in this case). In other words, the Popup starts behaving as if its Placement=Top.
This behavior leads to issues with the vertical resizing of the CollectionEditor control. Firstly, when the Popup is automatically aligned using the Top placement, if you resize to a size small enough to fit under the picker control, the Popup gets re-positioned below the picker. Secondly, if you vertically resize the CollectionEditor to a bigger size while aligned to Top, the resizing action will increase the control height, but because of the alignment it will look like the resizing happens from the top corner of the control. In this scenario, also the buttons of the CollectionEditor disappear.
To work this around, you can disable the resizing behavior of the CollectionEditor control.
static MainWindow()
{
EventManager.RegisterClassHandler(typeof(CollectionEditor), CollectionEditor.LoadedEvent, new RoutedEventHandler(CollectionEditor_Loaded));
}
private static void CollectionEditor_Loaded(object sender, RoutedEventArgs e)
{
var collectionEditor = (CollectionEditor)sender;
var popupParent = collectionEditor.ParentOfType<Popup>();
if (popupParent != null && popupParent.PlacementTarget.GetType() == typeof(CollectionEditorPicker))
{
collectionEditor.ResizeGripperVisibility = Visibility.Collapsed;
}
}
Pressing the Enter key when a field editor is focused will scroll the vertical scrollbar to the topmost offset. This is reproducible when the properties are grouped. Also, the RenderMode should be set to Flat.
To work this around, change the RenderMode setting to Hierarchical right before the Enter key logic is executed and then return it back to Flat after some time.
private void RadPropertyGrid_PreviewKeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
var propertyGrid = (RadPropertyGrid)sender;
var currentMode = propertyGrid1.RenderMode;
propertyGrid.RenderMode = RenderMode.Hierarchical;
Dispatcher.BeginInvoke(new Action(() =>
{
propertyGrid.RenderMode = currentMode;
}));
}
When the Expression_Dark theme is applied to the RadPropertyGrid, selecting an item is hard to read, as the item's foreground is white and the selection state is in a similar color.
To work this around, use the following Style:
<Style TargetType="telerik:PropertyGridField">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Black"/>
</Trigger>
</Style.Triggers>
</Style>
Add selected inactive state for PropertyGrid Field.
Currently, the control allows you to search only for fields that have been expanded already. If a parent field was never expanded, the search won't look for its children.
Allow searching in not expanded fields.
Possibility to edit only the SelectedPropertyDefinition (like in Visual Studio)