Telerik Forums
UI for WPF Forum
2 answers
149 views

Is there a way I can wire up hyperlinks to open when the user clicks on them with the middle mouse button?

Joshua
Top achievements
Rank 1
 answered on 18 Dec 2019
3 answers
222 views

Hallo,

I am using this code to fill the Editor With code:

public void Test()
{
    using (StreamReader reader = new StreamReader("../../ViewModels/ShellViewModel.cs", Encoding.UTF8))
    {
        SyntaxEditor.Document = new TextDocument(reader);
    }
    CSharpTagger cSharpTagger = new CSharpTagger(SyntaxEditor);
    SyntaxEditor.TaggersRegistry.RegisterTagger(cSharpTagger);
}

 

This does not Show any result. The SyntaxEditor is initialized and editable. But the code from ShellViewModel.cs is not showing (it is correctly loaded in the reader). Also when I type keywords into the editor, they are not highlighted. The SyntaxEditor.Document.CurrentSnapshot also does show that at least something is loaded (correct lenght and linecount).

Petar Mladenov
Telerik team
 answered on 17 Dec 2019
1 answer
110 views
Hi Team

I am in the process of migrating our WPF App from using .NET Framework 4.7.2 to .NET Core 3.1.

Migrating From :
 - Telerik UI for WPF .NET Framework NoXaml Binaries (Version R3 2019 SP1)
 - .NET Framework 4.7.2

Migrating To :
 - Telerik UI for WPF .NET Core NoXaml Binaries (Version R3 2019 SP1)
 - .NET Core 3.1

All has gone well to far with very little code change, however we have noticed a breaking changed between the Telerik .NET Framework assemblies and the Telerik .NET Core assemblies.

It appears that when users click on a GridViewHyperlinkColumn within a RadGridView, the hyperlink no longer follows through to open up the url in the default web browser as it did before. This can be demonstrated in a very simple example.

<telerik:RadGridView.Columns>
    <telerik:GridViewDataColumn Header="Title" UniqueName="Title" DataMemberBinding="{Binding Title}" Width="Auto"/>
    <telerik:GridViewHyperlinkColumn Header="Website" UniqueName="Website" DataMemberBinding="{Binding Website}" Width="*"/>
</telerik:RadGridView.Columns>

Please can this be investigated.
Vladimir Stoyanov
Telerik team
 answered on 17 Dec 2019
1 answer
110 views

     I am creating a dynamic chart with a seriesdescriptorselector that changes the type of the X-axis (DateTimeContinuous or Linear) based on user defined settings.  I am also setting a grid for the horizontal and vertical axis of the chart.  The problem I am having is that only the horizontal lines of the grid are showing up on the chart.  I get no vertical lines at all regardless of whether the horizontal axis is Linear of DateTimeContinuous.  Does the use of a series descriptor selector invalidate the grid lines for the axis?

 

Thank you

Martin Ivanov
Telerik team
 answered on 17 Dec 2019
6 answers
339 views
When I am adding tabs to my tabcontrol I noticed that the tabs size according to the size of the control (their parent).  Is there any way to have the tabs actually wrap onto a 2nd (or even 3rd) level?

For example: In your demo, you have an "Add Tab" button, but you can only add so many tabs....  If you keep adding tabs you will start to see that the tabs get VERY small and unreadable.  Is there a way to have them "Auto Wrap" onto a 2nd tier of some sort?  Could this be something that is thought about for future enhancements?

Thanks a bunch
Dilyan Traykov
Telerik team
 answered on 17 Dec 2019
19 answers
363 views

We've seen a crash in our application when the RadMap control is disposed. We've only seen the crash once but have been unable to reproduce. The stack trace is as follows:

Telerik.Windows.Controls.DataVisualization : System.NullReferenceException
Object reference not set to an instance of an object.

at Telerik.Windows.Controls.Map.Location.PixelToLogical(RadMap mapControl, Point pixel, Boolean useTileLayer)

at Telerik.Windows.Controls.Map.Location.PixelToLogical(RadMap mapControl, Point pixel, Boolean useTileLayer)
at Telerik.Windows.Controls.Map.MapMouseLocationIndicator.MapControl_MouseMove(Object sender, MouseEventArgs e)
at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
at System.Windows.UIElement.RaiseTrustedEvent(RoutedEventArgs args)
at System.Windows.Input.InputManager.ProcessStagingArea()
at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
at System.Windows.Interop.HwndMouseInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawMouseActions actions, Int32 x, Int32 y, Int32 wheel)
at System.Windows.Interop.HwndMouseInputProvider.FilterMessage(IntPtr hwnd, WindowMessage msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at System.Windows.Interop.HwndSource.InputFilterMessage(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
at System.Windows.Application.RunDispatcher(Object ignore)
at System.Windows.Application.RunInternal(Window window)
at CNL.IPSecurityCenter.WindowsClient.App.Main()

We're currently using version 2017.2.614.45. Looking at the Telerik code it seems like the mouse event handler for MapMouseLocationIndicator doesn't get detached when RadMap is disposed. Is it possible there's some race condition that allows a mouse event to be processed in MapMouseLocationIndicator after its RadMap property has been set to null (which does happen when RadMap is disposed)?

Thanks
Pete

Peter
Top achievements
Rank 1
Veteran
 answered on 16 Dec 2019
1 answer
109 views
Hi Team

I am in the process of migrating our WPF App from using .NET Framework 4.7.2 to .NET Core 3.1.

Migrating From :
 - Telerik UI for WPF .NET Framework NoXaml Binaries (Version R3 2019 SP1)
 - .NET Framework 4.7.2

Migrating To :
 - Telerik UI for WPF .NET Core NoXaml Binaries (Version R3 2019 SP1)
 - .NET Core 3.1

All has gone well so far with very little code change, however we have noticed a breaking change between the Telerik .NET Framework assemblies and the Telerik .NET Core assemblies.

We have a custom Dictionary of built-in ChartPalettes with custom display text that is bound to a dropdown box as per the below. Users are able to select a ChartPalette from the dropdown when displaying charts.

        /// <summary>
        /// Dictionary of <see cref="ChartPalette"/>s with custom display text
        /// </summary>
        public Dictionary<string, ChartPalette> Palettes { get; private set; }

            Palettes = new Dictionary<string, ChartPalette>
            {
                {"Spring", ChartPalettes.Spring},
                {"Summer", ChartPalettes.Summer},
                {"Autumn", ChartPalettes.Autumn},
                {"Arctic", ChartPalettes.Arctic},
                {"Warm", ChartPalettes.Warm},
                {"Cold", ChartPalettes.Cold},
                {"Crystal", ChartPalettes.Crystal},
                {"Flower", ChartPalettes.Flower},
                {"Fluent", ChartPalettes.Fluent},
                {"Forest", ChartPalettes.Forest},
                {"Grayscale", ChartPalettes.Grayscale},
                {"Green", ChartPalettes.Green},
                {"Ground", ChartPalettes.Ground},
                {"Lilac", ChartPalettes.Lilac},
                {"Material", ChartPalettes.Material},
                {"Office 2013", ChartPalettes.Office2013},
                {"Office 2016", ChartPalettes.Office2016},
                {"Pastel", ChartPalettes.Pastel},
                {"Rainbow", ChartPalettes.Rainbow},
                {"Visual Studio 2013", ChartPalettes.VisualStudio2013},
                {"Visual Studio 2019", ChartPalettes.VisualStudio2019},  // Does not work in Telerik .NET Core assemblies
                {"Windows 8", ChartPalettes.Windows8},
            };

The issue is that the VisualStudio2019 ChartPalette (from Telerik.Windows.Controls.ChartView) throws the below exception when using the Telerik .NET Core assemblies. This does not occur when using the Telerik .NET Framework assemblies.

System.IO.IOException: 'Cannot locate resource 'visualization/palettes/resources/visualstudio2019.xml'.'

StackTrace:
   at MS.Internal.AppModel.ResourcePart.GetStreamCore(FileMode mode, FileAccess access)
   at System.IO.Packaging.PackagePart.GetStream(FileMode mode, FileAccess access)
   at MS.Internal.IO.Packaging.PackagePartExtensions.GetSeekableStream(PackagePart packPart, FileMode mode, FileAccess access)
   at MS.Internal.IO.Packaging.PackagePartExtensions.GetSeekableStream(PackagePart packPart)
   at System.Windows.Application.GetResourceStream(Uri uriResource)
   at Telerik.Windows.Controls.ChartView.ChartPalettes.LoadPalette(String fileName)
   at Telerik.Windows.Controls.ChartView.ChartPalettes.get_VisualStudio2019()

I can confirm we have ALL Telerik .NET Core assemblies being referenced in our project including the Theme assemblies and styles. If we remove the VisualStudio2019 ChartPalette, it works perfectly without any issues.

Please can this be investigated.

Vicky
Telerik team
 answered on 16 Dec 2019
3 answers
121 views

We are having an issue with the CellStyleSelector randomly changing the style when scrolling left and right in the GridView.

We have it narrowed down to our comparison in the StyleSelector code. We need to compare the cell value to the Min and Max columns to see if it is within the range. If it is, set the style to Valid, if not set it to Invalid.

This works on loading of the grid, but the scrolling causes it to glitch.

Code where the value of comparison (cell) changes and causes glitch:

public class ValidationStyle : StyleSelector
{
    public override Style SelectStyle(object item, DependencyObject container)
    {
        if (item is ExpandoObject)
        {
            var inspection = (IDictionary<string, object>)item;
 
            var cell = container.GetValue(GridViewCell.ValueProperty);
 
            if (!(cell == null || cell.ToString() == ""))
            {
                double.TryParse(cell.ToString(), out double cellValue);
 
                inspection.TryGetValue("Max", out object maxValue);
                inspection.TryGetValue("Min", out object minValue);
 
                if ((double)minValue <= cellValue && cellValue <= (double)maxValue)
                {
                    return Valid;
                }
                else
                {
                    return Invalid;
                }
            }
        }
        return null;
    }
    public Style Valid { get; set; }
    public Style Invalid { get; set; }
}

 

Code example using a fixed value of comparison (cell) and does not glitch:

public class ValidationStyle : StyleSelector
{
    public override Style SelectStyle(object item, DependencyObject container)
    {
        if (item is ExpandoObject)
        {
            var inspection = (IDictionary<string, object>)item;
 
            int? cell = 1;
 
            if (!(cell == null || cell.ToString() == ""))
            {
                double.TryParse(cell.ToString(), out double cellValue);
 
                inspection.TryGetValue("Max", out object maxValue);
                inspection.TryGetValue("Min", out object minValue);
 
                if ((double)minValue <= cellValue && cellValue <= (double)maxValue)
                {
                    return Valid;
                }
                else
                {
                    return Invalid;
                }
            }
        }
        return null;
    }
    public Style Valid { get; set; }
    public Style Invalid { get; set; }
}

 

We have poured over these forums and every example for StyleSelector uses a fixed value for comparison. 

We have applied this concept to the NegativeStyleSelector.zip in this forum and it also glitches: https://www.telerik.com/forums/apply-cellstyleselector-in-code-behind

Any help would be appreciated!

Thanks!

Dilyan Traykov
Telerik team
 answered on 16 Dec 2019
9 answers
787 views

I am getting a strange error on a customer PC with RadGlyph's.  They have a vanilla Win7 box with .Net 4.5.1, any idea what might cause this?  It works fine on my Win7 machine so I'm not sure where to look.

 

System.Windows.Markup.XamlParseException: Set property 'Telerik.Windows.Controls.RadGlyph.Glyph' threw an exception. ---> System.IO.FileFormatException: Input file or data stream does not conform to the expected file format specification.<br>   at MS.Internal.Text.TextInterface.Native.Util.ConvertHresultToException(Int32 hr)<br>   at MS.Internal.Text.TextInterface.Font.CreateFontFace()<br>   at MS.Internal.Text.TextInterface.Font.AddFontFaceToCache()<br>   at MS.Internal.Text.TextInterface.Font.GetFontFace()<br>   at System.Windows.Media.GlyphTypeface..ctor(Font font)<br>   at MS.Internal.FontFace.PhysicalFontFamily.GetGlyphTypeface(FontStyle style, FontWeight weight, FontStretch stretch)<br>   at MS.Internal.FontFace.PhysicalFontFamily.MS.Internal.FontFace.IFontFamily.GetTypefaceMetrics(FontStyle style, FontWeight weight, FontStretch stretch)<br>   at System.Windows.Media.Typeface.ConstructCachedTypeface()<br>   at System.Windows.Media.Typeface.get_CachedTypeface()<br>   at System.Windows.Media.Typeface.CheckFastPathNominalGlyphs(CharacterBufferRange charBufferRange, Double emSize, Double scalingFactor, Double widthMax, Boolean keepAWord, Boolean numberSubstitution, CultureInfo cultureInfo, TextFormattingMode textFormattingMode, Boolean isSideways, Boolean breakOnTabs, Int32& stringLengthFit)<br>   at MS.Internal.TextFormatting.SimpleRun.CreateSimpleTextRun(CharacterBufferRange charBufferRange, TextRun textRun, TextFormatterImp formatter, Int32 widthLeft, Boolean emergencyWrap, Boolean breakOnTabs)<br>   at MS.Internal.TextFormatting.SimpleRun.Create(FormatSettings settings, CharacterBufferRange charString, TextRun textRun, Int32 cp, Int32 cpFirst, Int32 runLength, Int32 widthLeft, Int32 idealRunOffsetUnRounded)<br>   at MS.Internal.TextFormatting.SimpleTextLine.Create(FormatSettings settings, Int32 cpFirst, Int32 paragraphWidth)<br>   at MS.Internal.TextFormatting.TextFormatterImp.FormatLineInternal(TextSource textSource, Int32 firstCharIndex, Int32 lineLength, Double paragraphWidth, TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak, TextRunCache textRunCache)<br>   at MS.Internal.TextFormatting.TextFormatterImp.FormatLine(TextSource textSource, Int32 firstCharIndex, Double paragraphWidth, TextParagraphProperties paragraphProperties, TextLineBreak previousLineBreak)<br>   at System.Windows.Media.FormattedText.LineEnumerator.FormatLine(TextSource textSource, Int32 textSourcePosition, Double maxLineLength, TextParagraphProperties paraProps, TextLineBreak lineBreak)<br>   at System.Windows.Media.FormattedText.LineEnumerator.MoveNext()<br>   at System.Windows.Media.FormattedText.DrawAndCalculateMetrics(DrawingContext dc, Point drawingOffset, Boolean getBlackBoxMetrics)<br>   at System.Windows.Media.FormattedText.get_Metrics()<br>   at Telerik.Windows.Controls.RadGlyph.CalculateElementDesiredSize()<br>   at Telerik.Windows.Controls.RadGlyph.RemeasureElement(DependencyObject d, DependencyPropertyChangedEventArgs e)<br>   at System.Windows.DependencyObject.OnPropertyChanged(DependencyPropertyChangedEventArgs e)<br>   at System.Windows.FrameworkElement.OnPropertyChanged(DependencyPropertyChangedEventArgs e)<br>   at System.Windows.DependencyObject.NotifyPropertyChange(DependencyPropertyChangedEventArgs args)<br>   at System.Windows.DependencyObject.UpdateEffectiveValue(EntryIndex entryIndex, DependencyProperty dp, PropertyMetadata metadata, EffectiveValueEntry oldEntry, EffectiveValueEntry& newEntry, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType)<br>   at System.Windows.DependencyObject.SetValueCommon(DependencyProperty dp, Object value, PropertyMetadata metadata, Boolean coerceWithDeferredReference, Boolean coerceWithCurrentValue, OperationType operationType, Boolean isInternal)<br>   at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)<br>   at System.Windows.Baml2006.WpfMemberInvoker.SetValue(Object instance, Object value)<br>   at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(XamlMember member, Object obj, Object value)<br>   at MS.Internal.Xaml.Runtime.ClrObjectRuntime.SetValue(Object inst, XamlMember property, Object value)<br>   --- End of inner exception stack trace ---<br>   at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlReader templateReader, XamlObjectWriter currentWriter)<br>   at System.Windows.FrameworkTemplate.LoadTemplateXaml(XamlObjectWriter objectWriter)<br>   at System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(DependencyObject container, IComponentConnector componentConnector, IStyleConnector styleConnector, List`1 affectedChildren, UncommonField`1 templatedNonFeChildrenField)<br>   at System.Windows.FrameworkTemplate.LoadContent(DependencyObject container, List`1 affectedChildren)<br>   at System.Windows.StyleHelper.ApplyTemplateContent(UncommonField`1 dataField, DependencyObject container, FrameworkElementFactory templateRoot, Int32 lastChildIndex, HybridDictionary childIndexFromChildID, FrameworkTemplate frameworkTemplate)<br>   at System.Windows.FrameworkTemplate.ApplyTemplateContent(UncommonField`1 templateDataField, FrameworkElement container)<br>   at System.Windows.FrameworkElement.ApplyTemplate()<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at System.Windows.Controls.Control.MeasureOverride(Size constraint)<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at System.Windows.Controls.DockPanel.MeasureOverride(Size constraint)<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)<br>   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)<br>   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)<br>   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at System.Windows.Controls.Border.MeasureOverride(Size constraint)<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at System.Windows.Controls.Grid.MeasureCell(Int32 cell, Boolean forceInfinityV)<br>   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV, Boolean& hasDesiredSizeUChanged)<br>   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32 cellsHead, Size referenceSize, Boolean ignoreDesiredSizeU, Boolean forceInfinityV)<br>   at System.Windows.Controls.Grid.MeasureOverride(Size constraint)<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at MS.Internal.Helper.MeasureElementWithSingleChild(UIElement element, Size constraint)<br>   at System.Windows.Controls.ContentPresenter.MeasureOverride(Size constraint)<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at System.Windows.Documents.AdornerDecorator.MeasureOverride(Size constraint)<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at System.Windows.Controls.Border.MeasureOverride(Size constraint)<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at System.Windows.Window.MeasureOverrideHelper(Size constraint)<br>   at System.Windows.Window.MeasureOverride(Size availableSize)<br>   at System.Windows.FrameworkElement.MeasureCore(Size availableSize)<br>   at System.Windows.UIElement.Measure(Size availableSize)<br>   at System.Windows.ContextLayoutManager.UpdateLayout()<br>   at System.Windows.ContextLayoutManager.UpdateLayoutCallback(Object arg)<br>   at System.Windows.Media.MediaContext.InvokeOnRenderCallback.DoWork()<br>   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()<br>   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)<br>   at System.Windows.Media.MediaContext.RenderMessageHandler(Object resizedCompositionTarget)<br>   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)<br>   at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
Dilyan Traykov
Telerik team
 answered on 16 Dec 2019
5 answers
1.0K+ views

When user clicks on X, I want to check whether there are any unsaved changes in the page. 

I have isNotSaved Property which tells me that. 

Now, if there are any unsaved changes, I want to show Alert window(which is in place) to confirm by user to close pane or not.

If user says Yes, I want to close, If not I dont want to close.

How can I implement this in Pure MVVM ?

herb
Top achievements
Rank 1
Veteran
Iron
 answered on 13 Dec 2019
Narrow your results
Selected tags
Tags
+? more
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?