In Development
Last Updated: 27 May 2022 10:31 by ADMIN

I have a WPF window containing a RadWebCam control and a CameraSettingsControl control associated with it (as shown in the online documentation). When I close the WPF window, no memory associated with that window is released. I implemented a Finalizer in the window and found that it wasn't getting called even after several GC.Collect() calls.  The culprit appears to be the CameraSettingsControl when it's associated with the RadWebCam control. In my application, it's not freeing about 80MB of memory after each window invocation.

I have included a full project sample which demonstrates the issue. Just set a BreakPoint on the finalizer ~TakePicture(). When the application is run, hit the 'Take Picture' button to launch the Camera window, and then close it.  To verify that it's not just a delay in garbage collection, hit the GCCollect button on the main window a couple of times. The Finalizer never gets called until you exit the app.

Here's the Telerik control WPF I'm using, but it's also in the sample.

<telerikWebCam:RadWebCam Grid.Column ="0" x:Uid="WebCamCaptureWindow_RadWebCam" x:Name="webCam" MinWidth="0" MinHeight="0" AutoStart="False" Margin="0 25 0, 0" 

                                       BorderThickness="0"
                                       Background="Black"
                                       PreviewSnapshots="True"
                                       RecordingButtonVisibility="Collapsed"
                                       Visibility="Visible"
                                       CameraError="OnWebCamCameraError" />

<telerikWebCam:CameraSettingsControl Grid.Column ="1" x:Uid="WebCamCaptureWindow_CameraControlSettings" x:Name="webCamSettingsControl" WebCam="{Binding ElementName=webCam}" 
                                                         Visibility="Visible"/>
In Development
Last Updated: 26 May 2022 14:42 by ADMIN

I've encountered a tiny bug when it comes to styling AutoCompleteBox using StyleManager.
If I set the StyleManager.ApplicationTheme of my app, the styling is correct, see the reference gif:

But if I set the style of AutoCompleteBox during runtime with StyleManager.SetTheme, the styling is not quite right - the underlying RadWatermarkBox is using the basic style I believe, because the text doesn't change it opacity when I hover over it (in the case of watermark text) or when I defocus the element (in the case of real text).

The example I'm using is just an empty WPF project with MainWindow.xaml having one RadAutoCompleteBox inside it, and MainWindow.xaml.cs is pictured in the gifs.

 

Best Regards,
Mateusz

In Development
Last Updated: 19 May 2022 13:25 by ADMIN

When the SelectionMode of MultiColumnComboBox is set to Single, changing the Selection invokes twice the SelectionChanged event.

What I would expect is that the event fires only once, with one item in AddedItems and one item in RemovedItems. Currently, addition and removal is done seperately, and the two invocations of the event correspond to them.

To reproduce, just use the Getting Started article about MultiColumnComboBox with the Clubs ItemSource. Subscribe to SelectionChanged event and make a change to the selection. I hope the following gif makes this clear - the first selection is valid, but the second should invoke the event only once, with 1 item added, 1 removed.

In Development
Last Updated: 18 May 2022 14:17 by ADMIN

Currently, to modify the background color of this element, the default control template of the GridViewCell element needs to be extracted, and the VisualState with x:Name="Highlighted" would need to be customized.

We could include an API for modifying the background color of the HighlightTextBlock element, when it is highlighted.

In Development
Last Updated: 17 May 2022 13:38 by ADMIN

If you add the RibbonView into the Content of a TabItem (or RadTabItem) and then remove it from the content, the RibbonView is still in the memory. 

This happens because we subscribe to few events of the Parent window on Loaded and unsubscribe on Unloaded. However, because of the specific content loading behavior of TabControl, Loaded of the content (the RibbonView) is fired once and Unloaded only once.

To work this around, before removing the RibbonView from the TabItem, call its OnUnloaded event handler. To do this, you can use a reflection to get the handler and then invoke it.

var methodInfo = typeof(RadRibbonView).GetMethods(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic).Where(m => m.Name == "OnUnloaded").First();
methodInfo.Invoke(ribbon, new object[2] { null, null });