Telerik Forums
UI for WPF Forum
2 answers
111 views

Hi,

I have a DataForm with AutoGenerateFields="True". In the AutoGeneratingField event handler I want to set a binding on the IsReadOnly property for some of the fields, so that when the FromProfile property is checked, those fields will be set as ReadOnly. The strange thing is that the binding only works if FromProfile is True when the AutoGeneratingField is fired. The DataField's ("Port", "Protocol" and "Interface") is set ReadOnly whenever the "FromProfile" DataField is checked. If FromProfile is False at the time the binding is set up, it doesn't work.

The AutoGeneratingField event handler looks like this:

01.if (e.DataField.Label.Equals("Port") || e.DataField.Label.Equals("Protocol") || e.DataField.Label.Equals("Interface"))
02.{
03.    var binding = new Binding("FromProfile")
04.    {
05.        Mode = BindingMode.OneWay,
06.        UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged,
07.    };
08.    e.DataField.SetBinding(DataFormDataField.IsReadOnlyProperty, binding);
09.}
 

Any idea why it doesn't work?

 

Regards,

Roar
Top achievements
Rank 1
 answered on 10 Nov 2015
1 answer
260 views

first forgive poor my english written

 

I Export to PNG before setting Zoom property is 5, 1 => 1, 1

but Export image is still 5, 1 Zoom setting

 

 in XAML Code

1.<!-- already Zoom property is 5,1 setting-->
2.<telerik:RadCartesianChart Grid.Column="0" Grid.Row="1" x:Name="trfChart1" Palette="Windows8" Zoom="5,1">

 

in cs Code

1.// this.myChart.Zoom = new Size(5, 1) already setting Zoom property     
2.string filename = "C:\\ExportedChart.png";
3.using (System.IO.Stream fileStream = System.IO.File.Open(filename, System.IO.FileMode.OpenOrCreate))
4.{
5.   this.trfChart1.Zoom = new Size(1, 1); // When before Export Zoom Property set Zoom 1, 1
6.   Telerik.Windows.Media.Imaging.ExportExtensions.ExportToImage(this.trfChart1, fileStream, new System.Windows.Media.Imaging.PngBitmapEncoder());
7.
8.// But Export result is still Zoom 5, 1 setting

 

 please give advise 

 

 

 

 

Martin Ivanov
Telerik team
 answered on 10 Nov 2015
3 answers
155 views
Hello.
In the examples I found the solution that use the RadRichTextBox to print a Chart. As for me, it looks a little strange. So, I use something like this:

public class ChartPrintBehaviour
{
    private const double ImageMargin = 100;
    private const double PageMargin = 10;
 
    private readonly RadChart chart;
 
    private readonly string header;
 
    private readonly bool portrait;
 
    public static readonly DependencyProperty IsEnabledProperty = DependencyProperty.RegisterAttached("IsEnabled", typeof(bool), typeof(ChartPrintBehaviour), new PropertyMetadata(false, IsEnabledChanged));
     
    public static readonly DependencyProperty HeaderProperty = DependencyProperty.RegisterAttached("Header", typeof(string), typeof(ChartPrintBehaviour));
 
    public static readonly DependencyProperty PortraitProperty = DependencyProperty.RegisterAttached("Portrait", typeof(bool), typeof(ChartPrintBehaviour));
 
    public ChartPrintBehaviour(RadChart chart, string header, bool portrait)
    {
        this.chart = chart;
        this.header = header;
        this.portrait = portrait;
    }
 
    public static void SetIsEnabled(DependencyObject dependencyObject, bool isEnabled)
    {
        dependencyObject.SetValue(IsEnabledProperty, isEnabled);
    }
 
    public static bool GetIsEnabled(DependencyObject dependencyObject)
    {
        return (bool)dependencyObject.GetValue(IsEnabledProperty);
    }
 
    public static void SetHeader(DependencyObject dependencyObject, string header)
    {
        dependencyObject.SetValue(HeaderProperty, header);
    }
 
    public static void SetPortrait(DependencyObject dependencyObject, bool portrait)
    {
        dependencyObject.SetValue(PortraitProperty, portrait);
    }
 
    private static void IsEnabledChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var chart = d as RadChart;
        if (chart == null)
        {
            return;
        }
 
        if (!((bool)e.NewValue))
        {
            return;
        }
        var header = d.GetValue(HeaderProperty);
        var beh = new ChartPrintBehaviour(chart, header == null ? string.Empty : header.ToString(), (bool)d.GetValue(PortraitProperty));
        beh.Attach();
    }
 
    private void Attach()
    {
        chart.CommandBindings.Add(new CommandBinding(ApplicationCommands.Print, PrintExecuted, CanPrintExecute));
    }
 
    private void CanPrintExecute(object sender, CanExecuteRoutedEventArgs e)
    {
        e.CanExecute = chart != null;
    }
 
    private void PrintExecuted(object sender, ExecutedRoutedEventArgs e)
    {
        if (chart == null)
        {
            return;
        }
 
        var dlg = new PrintDialog { PrintQueue = LocalPrintServer.GetDefaultPrintQueue() };
        dlg.PrintTicket = dlg.PrintQueue.DefaultPrintTicket;
        if (!portrait)
        {
            dlg.PrintTicket.PageOrientation = PageOrientation.Landscape;
        }
 
        if (!dlg.ShowDialog().GetValueOrDefault())
        {
            return;
        }
 
        var doc = new FlowDocument
        {
            PageWidth = dlg.PrintableAreaWidth - PageMargin,
            PageHeight = dlg.PrintableAreaHeight - PageMargin
        };
 
        FillDocument(doc);
 
        var writer = PrintQueue.CreateXpsDocumentWriter(dlg.PrintQueue);
        writer.Write(((IDocumentPaginatorSource)doc).DocumentPaginator, dlg.PrintTicket);
    }
 
    protected virtual void FillDocument(FlowDocument doc)
    {
        var bi = new BitmapImage();
        bi.BeginInit();
        bi.CacheOption = BitmapCacheOption.OnLoad;
        var ms = new MemoryStream();
        chart.ExportToImage(ms, new PngBitmapEncoder());
        bi.StreamSource = ms;
        bi.EndInit();
         
        var img = new Image
        {
            Source = bi,
            Stretch = Stretch.Uniform,
            Height = doc.PageHeight - ImageMargin,
            Width = doc.PageWidth - ImageMargin,
            VerticalAlignment = VerticalAlignment.Top
        };
 
        Run headerRun = null;
        if (!string.IsNullOrEmpty(header))
        {
            headerRun = new Run(header);
        }
 
        var fig = new Figure
        {
            VerticalAnchor = FigureVerticalAnchor.ContentTop,
            HorizontalAnchor = FigureHorizontalAnchor.ContentCenter
        };
 
        if (headerRun != null)
        {
            fig.Blocks.Add(new Paragraph(headerRun) { TextAlignment = TextAlignment.Center });
        }
 
        var block = new BlockUIContainer(img);
        fig.Blocks.Add(block);
 
        doc.Blocks.Add(new Paragraph(fig));
    }
}

After that we can print any Chart with the this code:

  <telerik:RadChart TelerikExtentions:ChartPrintBehaviour.Header="Print Header"
                          TelerikExtentions:ChartPrintBehaviour.IsEnabled="True">
 <telerik:ChartArea.ContextMenu>
      <ContextMenu>
           <MenuItem Header="Print" Command="Print" />
      </ContextMenu>
</telerik:ChartArea.ContextMenu>
 
Evgenia
Telerik team
 answered on 10 Nov 2015
2 answers
74 views

Hi, downloaded the latest version of the WPF components (2015.3.1104) a couple of days ago. When I upgraded a project to the latest version, I noticed that styles applied at the Gridview stopped working. The window is just blank and no visual grid at all.

I created a new project from scratch, converted it to Telerik application and created a resource dictionary with a simple style. (Se attached files)

Same problem. No visual grid in window. Am I doing something wrong?

 MainWindow.xaml
<telerik:RadGridView Name="testgrid" Style="{StaticResource BaseGrid}"/>

App.xaml
<Application x:Class="WpfApplication3.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:WpfApplication3" StartupUri="MainWindow.xaml">

    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Telerik.Windows.Themes.Expression_Dark;component/Themes/System.Windows.xaml" />
                <ResourceDictionary Source="/Telerik.Windows.Themes.Expression_Dark;component/Themes/Telerik.Windows.Controls.xaml" />
                <ResourceDictionary Source="/Telerik.Windows.Themes.Expression_Dark;component/Themes/Telerik.Windows.Controls.Input.xaml" />
                <ResourceDictionary Source="/Telerik.Windows.Themes.Expression_Dark;component/Themes/Telerik.Windows.Controls.GridView.xaml" />
                <ResourceDictionary Source="Styles.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

 

 Styles.xaml
    <Style x:Key="BaseGrid" TargetType="telerik:RadGridView">

        <Setter Property="GridLinesVisibility" Value="Both"/>
        <Setter Property="RowIndicatorVisibility" Value="Collapsed"/>
        <Setter Property="AutoGenerateColumns" Value="False"/>
    </Style>​

Johan
Top achievements
Rank 1
 answered on 10 Nov 2015
1 answer
376 views

Hi,

I'm using Telerik's TreeView, GridView, ListBox, DragDropManager in my project.

I decided to use the "Binaries.NoXaml" dlls because I don't really need all the themes included. I referenced the relevant control dlls + Telerik.Windows.Themes.Windows8.dll just so I can use the styling for the Telerik controls that I do use.

In my app.xaml I added in merged dictionaries the following resource dictionaries:

<ResourceDictionary Source="/Telerik.Windows.Themes.Windows8;component/Themes/Telerik.Windows.Controls.xaml"/>
<ResourceDictionary Source="/Telerik.Windows.Themes.Windows8;component/Themes/Telerik.Windows.Controls.Navigation.xaml"/>

I noticed that "System.Windows.Controls.Button" also get styled with your Windows8 theme!

How can I cancel this behavior and get only the Telerik controls to have the Windows8 theme?

Evgenia
Telerik team
 answered on 10 Nov 2015
15 answers
683 views
Hi,

Is there a way to make the header row to wrap the header text and make it autosize to fit the full height? 
I achieved that by modifying the HeaderCellStyle of the column, but that solution replaces sorting/filtering/etc...
                        <telerik:GridViewDataColumn.HeaderCellStyle> 
                            <Style TargetType="{x:Type telerik:GridViewHeaderCell}"
                                <Setter Property="Template"
                                    <Setter.Value> 
                                        <ControlTemplate TargetType="{x:Type telerik:GridViewHeaderCell}"
                                            <TextBlock Text="{TemplateBinding Content}" TextWrapping="Wrap" VerticalAlignment="Center" Margin="2" /> 
                                        </ControlTemplate> 
                                    </Setter.Value> 
                                </Setter> 
                            </Style> 
                        </telerik:GridViewDataColumn.HeaderCellStyle> 

do you know a better way of doing that?

Thanks,
Ruben.
Maya
Telerik team
 answered on 10 Nov 2015
3 answers
400 views

Is there a way to control the Visibility of the individual categorical data points within a BarSeries (or any series), assuming that the series are defined by a ChartSeriesProvider?

I'm essentially looking to toggle the visibility of the various values available in the CategoryPath property of the CategoricalSeriesDescriptor below.  The entire XAML for my chart is as follows:

         <telerik:RadCartesianChart x:Name="chart" Grid.Column="1" Palette="Windows8">
            <telerik:RadCartesianChart.HorizontalAxis>
                <telerik:CategoricalAxis/>
            </telerik:RadCartesianChart.HorizontalAxis>
            <telerik:RadCartesianChart.VerticalAxis>
                <telerik:LinearAxis LabelFormat="P0"/>
            </telerik:RadCartesianChart.VerticalAxis>
            <telerik:RadCartesianChart.SeriesProvider>
                <telerik:ChartSeriesProvider Source="{Binding ExposureChartData}">
                    <telerik:ChartSeriesProvider.SeriesDescriptors>
                        <!--Current Weight Series-->
                        <telerik:CategoricalSeriesDescriptor ItemsSourcePath="SeriesData" ValuePath="CategoryValue" CategoryPath="CategoryName">
                            <telerik:CategoricalSeriesDescriptor.Style>
                                <Style TargetType="telerik:BarSeries">
                                    <Setter Property="CombineMode" Value="Cluster"/>
                                    <Setter Property="ShowLabels" Value="True"/>
                                    <Setter Property="LegendSettings">
                                        <Setter.Value>
                                            <telerik:SeriesLegendSettings Title="{Binding SeriesName}"/>
                                        </Setter.Value>
                                    </Setter>
                                </Style>
                            </telerik:CategoricalSeriesDescriptor.Style>
                        </telerik:CategoricalSeriesDescriptor>
                    </telerik:ChartSeriesProvider.SeriesDescriptors>
                </telerik:ChartSeriesProvider>
            </telerik:RadCartesianChart.SeriesProvider>
        </telerik:RadCartesianChart>

Martin Ivanov
Telerik team
 answered on 10 Nov 2015
1 answer
101 views
In your "Grouping Basics" sample, you have a "Category" group (Business Layer, Data Layer, etc.), and a "Level" sub-group ("200", "250", etc.).

Is there a way to filter in such a way that levels 200 and 250 would appear under Business Layer only, level 300 under Data Layer, etc.?
Claire
Top achievements
Rank 1
 answered on 09 Nov 2015
3 answers
153 views

Hi,

I have the following code:

<telerik:RadGridView ItemsSource="{Binding PagedSource, ElementName=dataPager}"
                                 IsReadOnly="True"
                                 ShowGroupPanel="False"
                                 ShowColumnHeaders="False"
                                 RowIndicatorVisibility="Collapsed"
                                 AutoGenerateColumns="False"
                                 AutoExpandGroups="True">
 <telerik:RadGridView.GroupDescriptors>
     <telerik:GroupDescriptor Member="OwnerTypeDescription"/>
 </telerik:RadGridView.GroupDescriptors>
</telerik:RadGridView>
 
<telerik:RadDataPager x:Name="dataPager"
                      PageSize="{Binding RecordsPerListPage}"
                      Source="{Binding PagedCollection}"
                      DisplayMode="FirstLastPreviousNext"
                      IsTotalItemCountFixed="False"/>

The property RecordsPerList page returns 10, however the paging doesn't take this into account and 20+ records are still shown on a single page.

I noticed that this only happens if grouping is set for the gridview. If I remove the GroupDescriptor paging works properly and only 10 records per page are shown.

Any idea why this is happening?

Thanks!

Ken
Top achievements
Rank 1
 answered on 09 Nov 2015
1 answer
109 views

Hello,

I am trying to set up a letterpaper in the RadRichTextbox, however I am not having much success (see code).

RadDocument document = new RadDocument();
Header header = new Header() { Body = document, IsLinkedToPrevious = false };
var section = new Telerik.Windows.Documents.Model.Section();
section.HasDifferentFirstPageHeaderFooter = true;
section.PageSize = PaperTypeConverter.ToSize(PaperTypes.A4);
document.Sections.Add(section);

var paragraph = new Telerik.Windows.Documents.Model.Paragraph();
ImageInline image = new ImageInline(stream);

FloatingImageBlock imageBlock = new FloatingImageBlock();
imageBlock.ImageInline = image;
imageBlock.WrappingStyle = WrappingStyle.BehindText;
paragraph.Inlines.Add(imageBlock);

document.Sections.First().Children.Add(paragraph);
this.TextEditor.UpdateHeader(document.Sections.First(), HeaderFooterType.Default, header);

I am seeing the image in the header with this code, however not filling in the whole page. If I then click in the header and press Enter on the keyboard the full page length image is displayed. With pressing Enter a second time the image dissappears again. In addition I am unsure how I can place a differing image for the follow up pages.

My goal is to acheive the following points in order to be able to use this letterpaper:
- Image fills the page (imagesize = pagesize)
- Image ​on first page is ​differing to the other pages
- Margins of the first page are differing to the other pages

 

Sincerly

A.Kasar

Todor
Telerik team
 answered on 09 Nov 2015
Narrow your results
Selected tags
Tags
+? more
Top users last month
Rob
Top achievements
Rank 3
Iron
Iron
Iron
Atul
Top achievements
Rank 1
Iron
Iron
Iron
Alexander
Top achievements
Rank 1
Veteran
Iron
Serkan
Top achievements
Rank 1
Iron
Shawn
Top achievements
Rank 1
Iron
Iron
Want to show your ninja superpower to fellow developers?
Top users last month
Rob
Top achievements
Rank 3
Iron
Iron
Iron
Atul
Top achievements
Rank 1
Iron
Iron
Iron
Alexander
Top achievements
Rank 1
Veteran
Iron
Serkan
Top achievements
Rank 1
Iron
Shawn
Top achievements
Rank 1
Iron
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?