I have a RadDiagramToolbox and I populate it in my viewmodel in an ObservableCollection. I have added a transform to one of the shapes already in the FlowChartShapeType of a 90 degree rotation. Now it appears properly in the toolbox however when I drag it into the diagram it keeps the shape but I lose the rotation. I have followed some examples on deserializing and have added what I have in the code behind on the diagram view. Why doesn't it deserialize properly since Transform is part of Geometry.
ViewModel:
this.Items = new ObservableCollection<MyShape>();
var fe_geometry = ShapeFactory.GetShapeGeometry(FlowChartShapeType.ManualOperationShape).Clone();
fe_geometry.Transform = new RotateTransform(90);
Items .Shapes.Add(new MyShape
{
Name = $"FE{i}",
Geometry = fe_geometry,
});
}
----------------------------
relevant xaml
View:
<telerik:RadDiagramToolbox x:Name="toolbox"
Title="Modules"
Header="{Binding SelectedItem.Header, RelativeSource={RelativeSource Self}}"
ItemsSource="{Binding Items}"
ItemTemplate="{StaticResource ToolboxGroupTemplate}"
Visibility="{Binding IsChecked, Converter={StaticResource BooleanToVisibilityConverter}, ElementName=toolboxButton}" />
<telerik:RadDiagram Grid.Row="1" x:Name="diagram" ConnectionBridge="Bow"
RouteConnections="True" IsRotationEnabled="False"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
IsEditable="False"
IsResizingEnabled="False" ShapeDeserialized="diagram_ShapeDeserialized" ShapeDoubleClicked="diagram_ShapeDoubleClicked" >
code behind:
public MainWindow()
{
InitializeComponent();
//this is when you drag it creates the right shape
//http://docs.telerik.com/devtools/wpf/controls/raddiagram/howto/drag-custom-toolboxitem
SerializationService.Default.ItemSerializing += Default_ItemSerializing;
}
private void Default_ItemSerializing(object sender, SerializationEventArgs<IDiagramItem> e)
{
if (e.Entity is RadDiagramShape)
{
e.SerializationInfo["Geometry"] = (e.Entity as RadDiagramShape).Geometry.ToString(CultureInfo.InvariantCulture);
XmlSerializer serializer = new XmlSerializer(typeof(IModule));
using (var writer = new StringWriter())
{
serializer.Serialize(writer, ((e.Entity as RadDiagramShape).DataContext as MyShape).Module);
e.SerializationInfo["DataContent2"] = writer.ToString();
}
}
}
private void diagram_ShapeDeserialized(object sender, Telerik.Windows.Controls.Diagrams.ShapeSerializationRoutedEventArgs e)
{
if (e.Shape as RadDiagramShape != null)
{
(e.Shape as RadDiagramShape).Geometry = GeometryParser.GetGeometry(e.SerializationInfo["Geometry"].ToString()).Clone();
var test = e.SerializationInfo["DataContent2"].ToString();
XmlSerializer serializer = new XmlSerializer(typeof(IModule));
using (var reader = new StringReader(test))
{
(e.Shape as RadDiagramShape).DataContext = serializer.Deserialize(reader);
}
}
}
Thanks,
Amiel
<tc:RadTreeView x:Name="tree" ItemsSource="{Binding CategoryCollectionView, UpdateSourceTrigger=PropertyChanged}" SelectionChanged="RadTreeView_SelectionChanged" LoadOnDemand="tree_LoadOnDemand" IsVirtualizing="True" tc:TreeViewPanel.VirtualizationMode="Standard" ta:AnimationManager.IsAnimationEnabled="False" IsDragTooltipEnabled="False" IsDragDropEnabled="True" SelectionMode="Multiple"> <tc:RadTreeView.Resources> <Style TargetType="{x:Type ScrollBar}" /> <HierarchicalDataTemplate DataType="{x:Type local:CategoryTreeItemViewModel}" ItemsSource="{Binding ChildrenCollectionView}"> <!--snip--> </HierarchicalDataTemplate> <DataTemplate DataType="{x:Type local:EventNodeViewModel}"> <!-- snip --> </DataTemplate> </tc:RadTreeView.Resources> <tc:RadTreeView.ItemContainerStyle> <Style TargetType="{x:Type tc:RadTreeViewItem}"> <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" /> <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}" /> <Style.Triggers> <DataTrigger Binding="{Binding DataContext.IsMainCategoryTree, ElementName=tree}" Value="True"> <Setter Property="IsLoadOnDemandEnabled" Value="{Binding LoadOnDemand}" /> </DataTrigger> </Style.Triggers> </Style> </tc:RadTreeView.ItemContainerStyle></tc:RadTreeView>I am creating a ViewModel for a Window with a kendo Wizzard control on it. The ViewModel is getting very big because I 5 pages in my wizzard. Is there a way to bind a ViewModel to a page.
Sorry I am new to WPF and MVVM.
Basically I have something like this.
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
xmlns:ui="clr-namespace:SMS.Installer.UI"
x:Class="SMS.Installer.UI.MainWindow"
mc:Ignorable="d"
Icon="Resources/favicon.ico"
Title="SMS Installer"
WindowStartupLocation="CenterScreen">
<Window.DataContext>
<ui:MainWindowViewModel/>
</Window.DataContext>
<Grid>
<DockPanel>
<telerik:RadWizard x:Name="MainWindowWizard" >
<!-- Introduction form -->
<telerik:WelcomeWizardPage Name="IntroductionPage" SideHeaderWidth="120">
<!-- some page controls removed -->
</telerik:WelcomeWizardPage>
<!-- License agreement -->
<telerik:WizardPage Name="LicenseAgreementPage" SideHeaderWidth="120" AllowNext="{Binding CanLicenseAgreementPageNext}">
<!-- !!!!!! WANT TO PUT BINDING HERE !!!!!! -->
<!-- some page controls removed-->
</telerik:WizardPage>
<!-- License key -->
<telerik:WizardPage Name="LicenseKeyPage" SideHeaderWidth="120" AllowNext="{Binding CanLicenseKeyPageNext}">
<!-- some page controls removed-->
</telerik:WizardPage>
<!-- database -->
<telerik:WizardPage Name="DatabasePage" SideHeaderWidth="120" AllowNext="{Binding CanDatabasePageNext}">
<!-- some page controls removed-->
</telerik:WizardPage>
<!-- installation -->
<telerik:CompletionWizardPage Name="InstallationPage" SideHeaderWidth="120" AllowHelp="False">
<!-- some page controls removed-->
</telerik:CompletionWizardPage>
</telerik:RadWizard>
</DockPanel>
</Grid>
</Window>
Hi,
Sometimes the bars are extremely thin for some sparse datasets. When I display a bar chart with a DateTimeContinuousAxis horizontal axis, spanning just a few hours with only 2 or 3 items, the bars are extremely thin. If I change the timespan to a day, also with just a few items, the bars look normal (see attached screenshots). I'm using UI for WPF Q2 2016, Is this s bug?
Thanks,
Brian
I am sure this was working but I am not seeing the correct output now:
Row Data Context Property
[Display(Name = "Start Date")][DisplayFormat(DataFormatString = "{0:d}")]public DateTime ClaimDate { get; set; }
XAML in the View
<telerik:RadGridView VerticalAlignment="Stretch" CanUserDeleteRows="False" CanUserFreezeColumns="False" CanUserInsertRows="False" CanUserReorderColumns="False" CanUserSearch="False" ShowGroupPanel="False" ShowSearchPanel="False" ItemsSource="{Binding Data.ItemsSource}" BorderBrush="Transparent" IsReadOnly="True" ShowToolTipOnTrimmedText="True" RowIndicatorVisibility="Collapsed" SelectionMode="Single" IsFilteringAllowed="False" AlternationCount="2"> </telerik:RadGridView>
C# Interactive Window
> DateTime.Today.ToString("d")"05/09/2017"
Screenshots are attached.
Any ideas?
Thanks,
Maurice
I have some columns with `CellStyleSelector` and `CellTemplateSelector` which associating with a property in row data, when the property changed in code behide, both StyleSelector and TemplateSelector are not refreshed.
now I have got the row which need to refresh from `ItemContainerGenerator`, but have no idea to do that.
RadGridView.Rebind() works but it might be a little heavy.
public void RefreshRowTheme(object rowData){ var container = this.grid.ItemContainerGenerator.ContainerFromItem(rowData); if (container != null) { var row = container as GridViewRow; if (row != null) { //how to re-apply StyleSelector and TemplateSelector on all cells } }}
Thanks.