зеркало из https://github.com/telerik/xaml-sdk.git
Update examples
This commit is contained in:
Родитель
3f21c74d29
Коммит
65ac2c9682
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
|
||||
</startup>
|
||||
</configuration>
|
|
@ -0,0 +1,9 @@
|
|||
<Application x:Class="DragDropUsingCommands.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:DragDropUsingCommands"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
|
@ -0,0 +1,17 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
|
||||
namespace DragDropUsingCommands
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
|
@ -0,0 +1,98 @@
|
|||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Interactivity;
|
||||
using Telerik.Windows.DragDrop;
|
||||
|
||||
namespace DragDropUsingCommands
|
||||
{
|
||||
public class CommandDragDropBehavior : Behavior<ItemsControl>
|
||||
{
|
||||
protected override void OnAttached()
|
||||
{
|
||||
base.OnAttached();
|
||||
|
||||
DragDropManager.AddDragInitializeHandler(this.AssociatedObject, OnDragInitialize);
|
||||
DragDropManager.AddGiveFeedbackHandler(this.AssociatedObject, OnGiveFeedback);
|
||||
DragDropManager.AddDragDropCompletedHandler(this.AssociatedObject, OnDragDropCompleted);
|
||||
DragDropManager.AddDropHandler(this.AssociatedObject, OnDrop);
|
||||
}
|
||||
|
||||
private void OnDragInitialize(object sender, DragInitializeEventArgs args)
|
||||
{
|
||||
args.AllowedEffects = DragDropEffects.All;
|
||||
var payload = DragDropPayloadManager.GeneratePayload(null);
|
||||
var data = ((FrameworkElement)args.OriginalSource).DataContext;
|
||||
payload.SetData("DragData", data);
|
||||
args.Data = payload;
|
||||
args.DragVisual = new ContentControl { Content = data, ContentTemplate = this.DragVisualTemplate };
|
||||
args.DragVisualOffset = args.RelativeStartPoint;
|
||||
}
|
||||
|
||||
private void OnGiveFeedback(object sender, Telerik.Windows.DragDrop.GiveFeedbackEventArgs args)
|
||||
{
|
||||
args.SetCursor(Cursors.Arrow);
|
||||
args.Handled = true;
|
||||
}
|
||||
|
||||
private void OnDragDropCompleted(object sender, DragDropCompletedEventArgs args)
|
||||
{
|
||||
var data = DragDropPayloadManager.GetDataFromObject(args.Data, "DragData");
|
||||
|
||||
var param = new DragDropParameter
|
||||
{
|
||||
DraggedItem = data,
|
||||
ItemsSource = this.AssociatedObject.ItemsSource
|
||||
};
|
||||
|
||||
if (this.DragCommand != null && this.DragCommand.CanExecute(param))
|
||||
{
|
||||
this.DragCommand.Execute(param);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDrop(object sender, Telerik.Windows.DragDrop.DragEventArgs args)
|
||||
{
|
||||
var data = ((DataObject)args.Data).GetData("DragData");
|
||||
|
||||
var param = new DragDropParameter
|
||||
{
|
||||
DraggedItem = data,
|
||||
ItemsSource = this.AssociatedObject.ItemsSource
|
||||
};
|
||||
|
||||
if (this.DropCommand != null && this.DropCommand.CanExecute(param))
|
||||
{
|
||||
this.DropCommand.Execute(param);
|
||||
}
|
||||
}
|
||||
|
||||
public ICommand DragCommand
|
||||
{
|
||||
get { return (ICommand)GetValue(DragCommandProperty); }
|
||||
set { SetValue(DragCommandProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DragCommandProperty =
|
||||
DependencyProperty.Register("DragCommand", typeof(ICommand), typeof(CommandDragDropBehavior), new PropertyMetadata(null));
|
||||
|
||||
public ICommand DropCommand
|
||||
{
|
||||
get { return (ICommand)GetValue(DropCommandProperty); }
|
||||
set { SetValue(DropCommandProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DropCommandProperty =
|
||||
DependencyProperty.Register("DropCommand", typeof(ICommand), typeof(CommandDragDropBehavior), new PropertyMetadata(null));
|
||||
|
||||
public DataTemplate DragVisualTemplate
|
||||
{
|
||||
get { return (DataTemplate)GetValue(DragVisualTemplateProperty); }
|
||||
set { SetValue(DragVisualTemplateProperty, value); }
|
||||
}
|
||||
|
||||
public static readonly DependencyProperty DragVisualTemplateProperty =
|
||||
DependencyProperty.Register("DragVisualTemplate", typeof(DataTemplate), typeof(CommandDragDropBehavior), new PropertyMetadata(null));
|
||||
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
using System.Collections;
|
||||
|
||||
namespace DragDropUsingCommands
|
||||
{
|
||||
public class DragDropParameter
|
||||
{
|
||||
public object DraggedItem { get; set; }
|
||||
|
||||
public IEnumerable ItemsSource { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,123 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{6F4CA258-BF15-465A-A408-55C5D969B442}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>DragDropUsingCommands</RootNamespace>
|
||||
<AssemblyName>DragDropUsingCommands</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Windows.Interactivity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls, Version=2018.3.927.40, Culture=neutral, PublicKeyToken=5803cfa389c90ce7, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="CommandDragDropBehavior.cs" />
|
||||
<Compile Include="Example.xaml.cs">
|
||||
<DependentUpon>Example.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="User.cs" />
|
||||
<Compile Include="ViewModel.cs" />
|
||||
<Page Include="Example.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="DragDropParameter.cs" />
|
||||
<Compile Include="MainWindow.xaml.cs">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<AppDesigner Include="Properties\" />
|
||||
<None Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
|
@ -0,0 +1,46 @@
|
|||
<UserControl x:Class="DragDropUsingCommands.Example"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||
xmlns:local="clr-namespace:DragDropUsingCommands"
|
||||
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="300" d:DesignWidth="300">
|
||||
<Grid x:Name="LayoutRoot" Background="White">
|
||||
<Grid.Resources>
|
||||
<Style TargetType="telerik:RadListBoxItem">
|
||||
<Setter Property="telerik:DragDropManager.AllowCapturedDrag" Value="True" />
|
||||
</Style>
|
||||
|
||||
<DataTemplate x:Key="ApplicationTemplate">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<TextBlock Margin="5" Text="{Binding UserName}" VerticalAlignment="Center" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
|
||||
<DataTemplate x:Key="DragVisualTemplate">
|
||||
<StackPanel Background="LightGreen">
|
||||
<TextBlock Margin="5" Text="Dragging :" />
|
||||
<TextBlock Margin="5" FontWeight="Bold" Text="{Binding UserName}" />
|
||||
</StackPanel>
|
||||
</DataTemplate>
|
||||
</Grid.Resources>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition />
|
||||
<ColumnDefinition />
|
||||
</Grid.ColumnDefinitions>
|
||||
<telerik:RadListBox ItemsSource="{Binding SourceData}" ItemTemplate="{StaticResource ApplicationTemplate}" AllowDrop="True">
|
||||
<i:Interaction.Behaviors>
|
||||
<local:CommandDragDropBehavior DropCommand="{Binding DropCommand}" DragCommand="{Binding DragCommand}" DragVisualTemplate="{StaticResource DragVisualTemplate}" />
|
||||
</i:Interaction.Behaviors>
|
||||
</telerik:RadListBox>
|
||||
<telerik:RadListBox ItemsSource="{Binding DestinationData}" Background="Gray" Grid.Column="1"
|
||||
ItemTemplate="{StaticResource ApplicationTemplate}" AllowDrop="True">
|
||||
<i:Interaction.Behaviors>
|
||||
<local:CommandDragDropBehavior DropCommand="{Binding DropCommand}" DragCommand="{Binding DragCommand}" DragVisualTemplate="{StaticResource DragVisualTemplate}"/>
|
||||
</i:Interaction.Behaviors>
|
||||
</telerik:RadListBox>
|
||||
</Grid>
|
||||
</UserControl>
|
|
@ -0,0 +1,14 @@
|
|||
using System.Windows.Controls;
|
||||
|
||||
namespace DragDropUsingCommands
|
||||
{
|
||||
public partial class Example : UserControl
|
||||
{
|
||||
public Example()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
this.DataContext = new ViewModel();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
<Window x:Class="DragDropUsingCommands.MainWindow"
|
||||
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:i="http://schemas.microsoft.com/expression/2010/interactivity"
|
||||
xmlns:local="clr-namespace:DragDropUsingCommands"
|
||||
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
|
||||
mc:Ignorable="d"
|
||||
Title="MainWindow" Height="350" Width="525">
|
||||
<local:Example />
|
||||
</Window>
|
|
@ -0,0 +1,12 @@
|
|||
using System.Windows;
|
||||
|
||||
namespace DragDropUsingCommands
|
||||
{
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
<Deployment xmlns="http://schemas.microsoft.com/client/2007/deployment"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
>
|
||||
<Deployment.Parts>
|
||||
</Deployment.Parts>
|
||||
</Deployment>
|
|
@ -0,0 +1,35 @@
|
|||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("DragDropUsingCommands_WPF")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("DragDropUsingCommands_WPF")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2018")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("bfe8f3d2-c61e-488f-bd85-695a4a94b45b")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -0,0 +1,63 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace DragDropUsingCommands.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DragDropUsingCommands.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -0,0 +1,26 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace DragDropUsingCommands.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
|
@ -0,0 +1,3 @@
|
|||
##DragDrop Using Commands## This example demonstrates how to use an attached behavior in order to execute drag and drop operations from your ViewModel class.
|
||||
|
||||
<keywords:attached, behavior, commands>
|
|
@ -0,0 +1,7 @@
|
|||
namespace DragDropUsingCommands
|
||||
{
|
||||
public class User
|
||||
{
|
||||
public string UserName { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
using System.Collections;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Windows.Input;
|
||||
using Telerik.Windows.Controls;
|
||||
|
||||
namespace DragDropUsingCommands
|
||||
{
|
||||
public class ViewModel
|
||||
{
|
||||
public ViewModel()
|
||||
{
|
||||
this.GenerateData(5);
|
||||
this.DropCommand = new DelegateCommand(OnDropExecute);
|
||||
this.DragCommand = new DelegateCommand(OnDragExecute);
|
||||
}
|
||||
|
||||
public ICommand DropCommand { get; private set; }
|
||||
public ICommand DragCommand { get; private set; }
|
||||
|
||||
public ObservableCollection<User> SourceData { get; set; }
|
||||
public ObservableCollection<User> DestinationData { get; set; }
|
||||
|
||||
private void OnDropExecute(object obj)
|
||||
{
|
||||
var param = obj as DragDropParameter;
|
||||
|
||||
((IList)param.ItemsSource).Add(param.DraggedItem);
|
||||
}
|
||||
|
||||
private void OnDragExecute(object obj)
|
||||
{
|
||||
var param = obj as DragDropParameter;
|
||||
|
||||
((IList)param.ItemsSource).Remove(param.DraggedItem);
|
||||
}
|
||||
|
||||
private void GenerateData(int count)
|
||||
{
|
||||
this.SourceData = new ObservableCollection<User>((
|
||||
from p in Enumerable.Range(0, count)
|
||||
select new User
|
||||
{
|
||||
UserName = "User " + p
|
||||
}).ToList());
|
||||
|
||||
this.DestinationData = new ObservableCollection<User>((
|
||||
from p in Enumerable.Range(0, count)
|
||||
select new User
|
||||
{
|
||||
UserName = "Destination User " + p
|
||||
}).ToList());
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,8 +7,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DragDropImage_WPF", "DragDr
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DropUserConfirmation_WPF", "DropUserConfirmation\DropUserConfirmation_WPF.csproj", "{4A7A1C09-8708-4431-A0E4-64AB41ED24FE}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DragDropUsingCommands_WPF", "DragDropUsingCommands\DragDropUsingCommands_WPF.csproj", "{6F4CA258-BF15-465A-A408-55C5D969B442}"
|
||||
EndProject
|
||||
Global
|
||||
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
|
@ -26,8 +27,13 @@ Global
|
|||
{4A7A1C09-8708-4431-A0E4-64AB41ED24FE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4A7A1C09-8708-4431-A0E4-64AB41ED24FE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4A7A1C09-8708-4431-A0E4-64AB41ED24FE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{6F4CA258-BF15-465A-A408-55C5D969B442}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6F4CA258-BF15-465A-A408-55C5D969B442}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6F4CA258-BF15-465A-A408-55C5D969B442}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6F4CA258-BF15-465A-A408-55C5D969B442}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
|
||||
EndGlobal
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<Application x:Class="ExportHierarchy.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
|
@ -0,0 +1,11 @@
|
|||
using System.Windows;
|
||||
|
||||
namespace ExportHierarchy
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for App.xaml
|
||||
/// </summary>
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace ExportHierarchy
|
||||
{
|
||||
/// <summary>
|
||||
/// A football club.
|
||||
/// </summary>
|
||||
public class Club : INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
private string name;
|
||||
private DateTime established;
|
||||
private int stadiumCapacity;
|
||||
private ObservableCollection<Player> players;
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return this.name; }
|
||||
set
|
||||
{
|
||||
if (value != this.name)
|
||||
{
|
||||
this.name = value;
|
||||
this.OnPropertyChanged("Name");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public DateTime Established
|
||||
{
|
||||
get { return this.established; }
|
||||
set
|
||||
{
|
||||
if (value != this.established)
|
||||
{
|
||||
this.established = value;
|
||||
this.OnPropertyChanged("Established");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int StadiumCapacity
|
||||
{
|
||||
get { return this.stadiumCapacity; }
|
||||
set
|
||||
{
|
||||
if (value != this.stadiumCapacity)
|
||||
{
|
||||
this.stadiumCapacity = value;
|
||||
this.OnPropertyChanged("StadiumCapacity");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ObservableCollection<Player> Players
|
||||
{
|
||||
get
|
||||
{
|
||||
if (null == this.players)
|
||||
{
|
||||
this.players = new ObservableCollection<Player>();
|
||||
}
|
||||
|
||||
return this.players;
|
||||
}
|
||||
}
|
||||
|
||||
public Club()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Club(string name, DateTime established, int stadiumCapacity)
|
||||
{
|
||||
this.name = name;
|
||||
this.established = established;
|
||||
this.stadiumCapacity = stadiumCapacity;
|
||||
}
|
||||
|
||||
public Club(string name, DateTime established, int stadiumCapacity, ObservableCollection<Player> players)
|
||||
: this(name, established, stadiumCapacity)
|
||||
{
|
||||
this.players = players;
|
||||
}
|
||||
|
||||
protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
|
||||
{
|
||||
PropertyChangedEventHandler handler = this.PropertyChanged;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, args);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
this.OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return this.Name;
|
||||
}
|
||||
|
||||
public static ObservableCollection<Club> GetClubs()
|
||||
{
|
||||
ObservableCollection<Club> clubs = new ObservableCollection<Club>();
|
||||
Club club;
|
||||
|
||||
// Liverpool
|
||||
club = new Club("Liverpool", new DateTime(1892, 1, 1), 45362);
|
||||
club.Players.Add(new Player("Pepe Reina", 25, Position.GK, "Spain"));
|
||||
club.Players.Add(new Player("Jamie Carragher", 23, Position.DF, "England"));
|
||||
club.Players.Add(new Player("Steven Gerrard", 8, Position.MF, "England"));
|
||||
club.Players.Add(new Player("Fernando Torres", 9, Position.FW, "Spain"));
|
||||
clubs.Add(club);
|
||||
|
||||
// Manchester Utd.
|
||||
club = new Club("Manchester Utd.", new DateTime(1878, 1, 1), 76212);
|
||||
club.Players.Add(new Player("Edwin van der Sar", 1, Position.GK, "Netherlands"));
|
||||
club.Players.Add(new Player("Rio Ferdinand", 5, Position.DF, "England"));
|
||||
club.Players.Add(new Player("Ryan Giggs", 11, Position.MF, "Wales"));
|
||||
club.Players.Add(new Player("Wayne Rooney", 10, Position.FW, "England"));
|
||||
clubs.Add(club);
|
||||
|
||||
// Chelsea
|
||||
club = new Club("Chelsea", new DateTime(1905, 1, 1), 42055);
|
||||
club.Players.Add(new Player("Petr Čech", 1, Position.GK, "Czech Republic"));
|
||||
club.Players.Add(new Player("John Terry", 26, Position.DF, "England"));
|
||||
club.Players.Add(new Player("Frank Lampard", 8, Position.MF, "England"));
|
||||
club.Players.Add(new Player("Nicolas Anelka", 39, Position.FW, "France"));
|
||||
clubs.Add(club);
|
||||
|
||||
// Arsenal
|
||||
club = new Club("Arsenal", new DateTime(1886, 1, 1), 60355);
|
||||
club.Players.Add(new Player("Manuel Almunia", 1, Position.GK, "Spain"));
|
||||
club.Players.Add(new Player("Gaël Clichy", 22, Position.DF, "France"));
|
||||
club.Players.Add(new Player("Cesc Fàbregas", 4, Position.MF, "Spain"));
|
||||
club.Players.Add(new Player("Robin van Persie", 11, Position.FW, "Netherlands"));
|
||||
clubs.Add(club);
|
||||
|
||||
return clubs;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,163 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{66A0367D-5610-42A0-9887-E8B316D7511C}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ExportHierarchy</RootNamespace>
|
||||
<AssemblyName>ExportHierarchy</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
|
||||
|
||||
|
||||
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject>ExportHierarchy.App</StartupObject>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.Data">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.GridView">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.GridView.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.GridView.Export">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.GridView.Export.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.Input">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.Input.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.Navigation">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.Navigation.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Data">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Documents.Core">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Documents.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Documents.Spreadsheet">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Documents.Spreadsheet.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Zip">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Zip.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Page Include="MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Club.cs" />
|
||||
<Compile Include="HierarchicalExportGridView.cs" />
|
||||
<Compile Include="MainWindow.xaml.cs">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="MyViewModel.cs" />
|
||||
<Compile Include="Player.cs" />
|
||||
<Compile Include="Position.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<AppDesigner Include="Properties\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
|
@ -0,0 +1,126 @@
|
|||
using Microsoft.Win32;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using Telerik.Windows.Controls;
|
||||
using Telerik.Windows.Controls.GridView;
|
||||
using Telerik.Windows.Data;
|
||||
using Telerik.Windows.Documents.Spreadsheet.FormatProviders;
|
||||
using Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx;
|
||||
using Telerik.Windows.Documents.Spreadsheet.FormatProviders.Pdf;
|
||||
using Telerik.Windows.Documents.Spreadsheet.Model;
|
||||
|
||||
namespace ExportHierarchy
|
||||
{
|
||||
public class HierarchicalExportGridView : RadGridView
|
||||
{
|
||||
private int subItemsCount = 0;
|
||||
private Dictionary<int, IList> subItemsDictionary = new Dictionary<int, IList>();
|
||||
private int headerRowCount;
|
||||
|
||||
public HierarchicalExportGridView()
|
||||
{
|
||||
this.ElementExportedToDocument += HierarchicalExportGridView_ElementExportedToDocument;
|
||||
}
|
||||
|
||||
private void HierarchicalExportGridView_ElementExportedToDocument(object sender, GridViewElementExportedToDocumentEventArgs e)
|
||||
{
|
||||
if (e.Element == ExportElement.Row && e.DataContext != null)
|
||||
{
|
||||
var gridView = sender as RadGridView;
|
||||
var item = e.DataContext;
|
||||
var relation = gridView.ChildTableDefinitions.First().Relation as PropertyRelation;
|
||||
if (relation != null)
|
||||
{
|
||||
var property = relation.ParentPropertyName;
|
||||
var subItems = item.GetType().GetProperty(property).GetValue(item) as IList;
|
||||
if (subItems.Count > 0)
|
||||
{
|
||||
var index = gridView.Items.IndexOf(item) + 1 + subItemsCount;
|
||||
subItemsCount += subItems.Count;
|
||||
this.subItemsDictionary.Add(index, subItems);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void Export(string format)
|
||||
{
|
||||
var workbook = this.GenerateWorkBook();
|
||||
var extension = format;
|
||||
|
||||
SaveFileDialog dialog = new SaveFileDialog()
|
||||
{
|
||||
DefaultExt = extension,
|
||||
FileName = "File",
|
||||
Filter = extension + "files (*." + extension + ")|*." + extension + "|All files (*.*)|*.*",
|
||||
FilterIndex = 1
|
||||
};
|
||||
|
||||
if (dialog.ShowDialog() == true)
|
||||
{
|
||||
BinaryWorkbookFormatProviderBase provider;
|
||||
if (format == "xlsx")
|
||||
{
|
||||
provider = new XlsxFormatProvider();
|
||||
}
|
||||
else
|
||||
{
|
||||
provider = new PdfFormatProvider();
|
||||
}
|
||||
|
||||
using (Stream output = dialog.OpenFile())
|
||||
{
|
||||
provider.Export(workbook, output);
|
||||
}
|
||||
|
||||
this.subItemsCount = 0;
|
||||
this.subItemsDictionary.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
private Workbook GenerateWorkBook()
|
||||
{
|
||||
this.headerRowCount = this.ShowColumnHeaders ? 1 : 0;
|
||||
this.headerRowCount += this.ChildrenOfType<GridViewColumnGroupRow>().Count();
|
||||
Workbook workbook = null;
|
||||
workbook = this.ExportToWorkbook();
|
||||
|
||||
var worksheet = workbook.ActiveWorksheet;
|
||||
DataTemplate dt = this.HierarchyChildTemplate;
|
||||
DependencyObject dio = dt.LoadContent();
|
||||
var childGrid = dio as RadGridView;
|
||||
|
||||
foreach (var subItem in subItemsDictionary)
|
||||
{
|
||||
var rowIndex = subItem.Key;
|
||||
RowSelection selection = worksheet.Rows[rowIndex + 1, rowIndex + subItem.Value.Count];
|
||||
selection.Insert();
|
||||
for (var i = 0; i < subItem.Value.Count; i++)
|
||||
{
|
||||
var item = subItem.Value[i];
|
||||
for (var j = 0; j < childGrid.Columns.Count; j++)
|
||||
{
|
||||
var column = childGrid.Columns[j] as GridViewDataColumn;
|
||||
var cell = worksheet.Cells[rowIndex + 1 + i, j];
|
||||
var property = item.GetType().GetProperty(column.DataMemberBinding.Path.Path);
|
||||
var value = property != null ? property.GetValue(item).ToString() : string.Empty;
|
||||
cell.SetValueAsText(value);
|
||||
var solidPatternFill = new PatternFill(PatternType.Solid, Color.FromArgb(255, 46, 204, 113), Colors.Transparent);
|
||||
cell.SetFill(solidPatternFill);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var j = 0; j < childGrid.Columns.Count; j++)
|
||||
{
|
||||
worksheet.Columns[j].AutoFitWidth();
|
||||
}
|
||||
|
||||
return workbook;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,72 @@
|
|||
<Window x:Class="ExportHierarchy.MainWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"
|
||||
xmlns:my="clr-namespace:ExportHierarchy"
|
||||
Title="MainWindow" Height="700" Width="700">
|
||||
<Window.Resources>
|
||||
<my:MyViewModel x:Key="MyViewModel"/>
|
||||
</Window.Resources>
|
||||
<Grid DataContext="{StaticResource MyViewModel}">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="*"/>
|
||||
<RowDefinition Height="Auto" />
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.Resources>
|
||||
<DataTemplate x:Key="HierarchyChildTemplate">
|
||||
<telerik:RadGridView Name="playersGrid"
|
||||
ShowGroupPanel="False"
|
||||
IsFilteringAllowed="False"
|
||||
CanUserSortColumns="False"
|
||||
CanUserReorderColumns="False"
|
||||
ItemsSource="{Binding Players}"
|
||||
AutoGenerateColumns="False">
|
||||
<telerik:RadGridView.Columns>
|
||||
<telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
|
||||
<telerik:GridViewDataColumn DataMemberBinding="{Binding Number}"/>
|
||||
<telerik:GridViewDataColumn DataMemberBinding="{Binding Position}"/>
|
||||
<telerik:GridViewDataColumn DataMemberBinding="{Binding Country}"/>
|
||||
</telerik:RadGridView.Columns>
|
||||
</telerik:RadGridView>
|
||||
</DataTemplate>
|
||||
</Grid.Resources>
|
||||
<my:HierarchicalExportGridView Grid.Row="0"
|
||||
x:Name="clubsGrid"
|
||||
ItemsSource="{Binding Clubs}"
|
||||
CanUserGroupColumns="False"
|
||||
AutoGenerateColumns="False"
|
||||
GroupRenderMode="Flat"
|
||||
ShowColumnHeaders="True"
|
||||
HierarchyChildTemplate="{StaticResource HierarchyChildTemplate}"
|
||||
Margin="5">
|
||||
<my:HierarchicalExportGridView.ChildTableDefinitions>
|
||||
<telerik:GridViewTableDefinition>
|
||||
<telerik:GridViewTableDefinition.Relation>
|
||||
<telerik:PropertyRelation ParentPropertyName="Players" />
|
||||
</telerik:GridViewTableDefinition.Relation>
|
||||
</telerik:GridViewTableDefinition>
|
||||
</my:HierarchicalExportGridView.ChildTableDefinitions>
|
||||
<my:HierarchicalExportGridView.Columns>
|
||||
<telerik:GridViewDataColumn DataMemberBinding="{Binding Name}"/>
|
||||
<telerik:GridViewDataColumn DataMemberBinding="{Binding Established}"
|
||||
Header="Est."
|
||||
DataFormatString="{}{0:yyyy}"/>
|
||||
<telerik:GridViewDataColumn DataMemberBinding="{Binding StadiumCapacity}"
|
||||
Header="Stadium"
|
||||
DataFormatString="{}{0:N0}"/>
|
||||
</my:HierarchicalExportGridView.Columns>
|
||||
</my:HierarchicalExportGridView>
|
||||
<StackPanel Grid.Row="1" Orientation="Horizontal">
|
||||
<Button Name="Button1"
|
||||
Content="Export to XLSX"
|
||||
Click="Button1_Click"
|
||||
Margin="5"
|
||||
HorizontalAlignment="Left"/>
|
||||
<Button Name="Button2"
|
||||
Content="Export to PDF"
|
||||
Click="Button2_Click"
|
||||
Margin="5"
|
||||
HorizontalAlignment="Left"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
</Window>
|
|
@ -0,0 +1,26 @@
|
|||
using System.Windows;
|
||||
|
||||
namespace ExportHierarchy
|
||||
{
|
||||
/// <summary>
|
||||
/// Interaction logic for MainWindow.xaml
|
||||
/// </summary>
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void Button1_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.clubsGrid.Export("xlsx");
|
||||
}
|
||||
|
||||
private void Button2_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
this.clubsGrid.Export("pdf");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,67 @@
|
|||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace ExportHierarchy
|
||||
{
|
||||
public class MyViewModel : INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
private ObservableCollection<Club> clubs;
|
||||
private ObservableCollection<Player> players;
|
||||
private object selectedItem;
|
||||
|
||||
public ObservableCollection<Club> Clubs
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.clubs == null)
|
||||
{
|
||||
this.clubs = Club.GetClubs();
|
||||
}
|
||||
|
||||
return this.clubs;
|
||||
}
|
||||
}
|
||||
|
||||
public ObservableCollection<Player> Players
|
||||
{
|
||||
get
|
||||
{
|
||||
if (this.players == null)
|
||||
{
|
||||
this.players = Player.GetPlayers();
|
||||
}
|
||||
|
||||
return this.players;
|
||||
}
|
||||
}
|
||||
|
||||
public object SelectedItem
|
||||
{
|
||||
get { return this.selectedItem; }
|
||||
set
|
||||
{
|
||||
if (value != this.selectedItem)
|
||||
{
|
||||
this.selectedItem = value;
|
||||
this.OnPropertyChanged("SelectedItem");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
|
||||
{
|
||||
PropertyChangedEventHandler handler = this.PropertyChanged;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, args);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
this.OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,108 @@
|
|||
using System.Collections.ObjectModel;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
|
||||
namespace ExportHierarchy
|
||||
{
|
||||
/// <summary>
|
||||
/// A football player.
|
||||
/// </summary>
|
||||
public class Player : INotifyPropertyChanged
|
||||
{
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
private string name;
|
||||
private int number;
|
||||
private Position position;
|
||||
private string country;
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return this.name; }
|
||||
set
|
||||
{
|
||||
if (value != this.name)
|
||||
{
|
||||
this.name = value;
|
||||
this.OnPropertyChanged("Name");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int Number
|
||||
{
|
||||
get { return this.number; }
|
||||
set
|
||||
{
|
||||
if (value != this.number)
|
||||
{
|
||||
this.number = value;
|
||||
this.OnPropertyChanged("Number");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Position Position
|
||||
{
|
||||
get { return this.position; }
|
||||
set
|
||||
{
|
||||
if (value != this.position)
|
||||
{
|
||||
this.position = value;
|
||||
this.OnPropertyChanged("Position");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public string Country
|
||||
{
|
||||
get { return this.country; }
|
||||
set
|
||||
{
|
||||
if (value != this.country)
|
||||
{
|
||||
this.country = value;
|
||||
this.OnPropertyChanged("Country");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public Player()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public Player(string name, int number, Position position, string country)
|
||||
{
|
||||
this.name = name;
|
||||
this.number = number;
|
||||
this.position = position;
|
||||
this.country = country;
|
||||
}
|
||||
|
||||
protected virtual void OnPropertyChanged(PropertyChangedEventArgs args)
|
||||
{
|
||||
PropertyChangedEventHandler handler = this.PropertyChanged;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, args);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPropertyChanged(string propertyName)
|
||||
{
|
||||
this.OnPropertyChanged(new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return this.Name;
|
||||
}
|
||||
|
||||
public static ObservableCollection<Player> GetPlayers()
|
||||
{
|
||||
return new ObservableCollection<Player>(Club.GetClubs().SelectMany(c => c.Players));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace ExportHierarchy
|
||||
{
|
||||
/// <summary>
|
||||
/// A football position.
|
||||
/// </summary>
|
||||
public enum Position
|
||||
{
|
||||
GK,
|
||||
DF,
|
||||
MF,
|
||||
FW
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("ExportHierarchy")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("ExportHierarchy")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
//In order to begin building localizable applications, set
|
||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||
//inside a <PropertyGroup>. For example, if you are using US english
|
||||
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
||||
//the line below to match the UICulture setting in the project file.
|
||||
|
||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||
|
||||
|
||||
[assembly: ThemeInfo(
|
||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||
//(used if a resource is not found in the page,
|
||||
// or application resource dictionaries)
|
||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||
//(used if a resource is not found in the page,
|
||||
// app, or any theme specific resource dictionaries)
|
||||
)]
|
||||
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -0,0 +1,72 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.1
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ExportHierarchy.Properties
|
||||
{
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if (object.ReferenceEquals(resourceMan, null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ExportHierarchy.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -0,0 +1,30 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.1
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ExportHierarchy.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings) (global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
|
@ -0,0 +1,4 @@
|
|||
## Export Hierarchy ##
|
||||
This example demonstrates how to export a hierarchical RadGridView to XLSX and PDF using the ExportToWorkbook extension method and the RadSpreadProcessing library.
|
||||
|
||||
<KeyWords: export, hierarchy, xlsx, pdf, excel, spreadprocessing>
|
|
@ -146,6 +146,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "InsertNewRowOnEnterAndScrol
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExportImageColumn_WPF", "ExportImageColumn\ExportImageColumn_WPF.csproj", "{53444E69-310A-41D8-A451-B02062711560}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ExportHierarchy", "ExportHierarchy\ExportHierarchy_WPF.csproj", "{66A0367D-5610-42A0-9887-E8B316D7511C}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
@ -850,6 +852,18 @@ Global
|
|||
{53444E69-310A-41D8-A451-B02062711560}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{53444E69-310A-41D8-A451-B02062711560}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{53444E69-310A-41D8-A451-B02062711560}.Release|x86.Build.0 = Release|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{66A0367D-5610-42A0-9887-E8B316D7511C}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
@ -29,7 +29,7 @@ namespace HighlightCustomColumn
|
|||
}
|
||||
|
||||
//Add HighlightTextBlock to keep the SearchPanel functionality
|
||||
HighlightTextBlock htb = new HighlightTextBlock(cell.Column.DataControl.SearchStateManager);
|
||||
HighlightTextBlock htb = new HighlightTextBlock();
|
||||
htb.DataType = this.DataType;
|
||||
htb.SetBinding(HighlightTextBlock.HighlightTextProperty, new Binding(this.DataMemberBinding.Path.Path));
|
||||
cell.SetBinding(GridViewCell.IsHighlightedProperty, new Binding("ContainsMatch") { Source = htb, Mode = BindingMode.TwoWay });
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
<Application x:Class="CustomHeatMapSourceAndDefinition.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:CustomHeatMapSource"
|
||||
StartupUri="MainWindow.xaml">
|
||||
<Application.Resources>
|
||||
|
||||
</Application.Resources>
|
||||
</Application>
|
|
@ -0,0 +1,8 @@
|
|||
using System.Windows;
|
||||
|
||||
namespace CustomHeatMapSourceAndDefinition
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
}
|
||||
}
|
|
@ -0,0 +1,110 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{6FB84FBA-F62F-403A-A07F-7927EF34DEE8}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>CustomHeatMapSource</RootNamespace>
|
||||
<AssemblyName>CustomHeatMapSource</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
|
||||
|
||||
|
||||
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="System.Xaml">
|
||||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls">
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.DataVisualization">
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.DataVisualization.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Data">
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Page Include="MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="CustomSource\CustomHeatMapDefinition.cs" />
|
||||
<Compile Include="CustomSource\CustomHeatMapItem.cs" />
|
||||
<Compile Include="CustomSource\CustomHeatMapSource.cs" />
|
||||
<Compile Include="MainWindow.xaml.cs">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
</EmbeddedResource>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Resource Include="Readme.md" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
|
@ -0,0 +1,46 @@
|
|||
using System.Windows.Media;
|
||||
using Telerik.Windows.Controls.HeatMap;
|
||||
|
||||
namespace CustomHeatMapSourceAndDefinition
|
||||
{
|
||||
public class CustomHeatMapDefinition : HeatMapDefinition
|
||||
{
|
||||
private CustomHeatMapSource source;
|
||||
|
||||
public CustomHeatMapDefinition(CustomHeatMapSource source)
|
||||
{
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
protected override IHeatMapSource Source
|
||||
{
|
||||
get { return this.source; }
|
||||
}
|
||||
|
||||
protected override int GetColor(int rowIndex, int columnIndex)
|
||||
{
|
||||
int color = ToColorInt(this.source.GetColor(rowIndex, columnIndex));
|
||||
return color;
|
||||
}
|
||||
|
||||
protected override object GetColumnHeader(int index)
|
||||
{
|
||||
return "Column " + index;
|
||||
}
|
||||
|
||||
protected override object GetRowHeader(int index)
|
||||
{
|
||||
return "Row " + index;
|
||||
}
|
||||
|
||||
protected override void OnItemsSourceChanged()
|
||||
{
|
||||
}
|
||||
|
||||
private static int ToColorInt(Color color)
|
||||
{
|
||||
var scaleApha = color.A / 255d;
|
||||
return (color.A << 24) | ((byte)(color.R * scaleApha) << 16) | ((byte)(color.G * scaleApha) << 8) | (byte)(color.B * scaleApha);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
using System.Windows.Media;
|
||||
|
||||
namespace CustomHeatMapSourceAndDefinition
|
||||
{
|
||||
public class CustomHeatMapItem
|
||||
{
|
||||
public Color Color { get; set; }
|
||||
public double Value { get; set; }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,64 @@
|
|||
using System.Collections;
|
||||
using System.Windows.Media;
|
||||
using Telerik.Windows.Controls.HeatMap;
|
||||
|
||||
namespace CustomHeatMapSourceAndDefinition
|
||||
{
|
||||
public class CustomHeatMapSource : IHeatMapSource
|
||||
{
|
||||
private CustomHeatMapItem[,] array;
|
||||
|
||||
public CustomHeatMapSource(CustomHeatMapItem[,] array)
|
||||
{
|
||||
this.array = array;
|
||||
}
|
||||
|
||||
public IEnumerable ItemsSource
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.array;
|
||||
}
|
||||
set
|
||||
{
|
||||
this.array = (CustomHeatMapItem[,])value;
|
||||
}
|
||||
}
|
||||
|
||||
public int RowsCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.array != null ? this.array.GetLength(0) : 0;
|
||||
}
|
||||
}
|
||||
|
||||
public int ColumnsCount
|
||||
{
|
||||
get
|
||||
{
|
||||
return this.array != null ? this.array.GetLength(1) : 0;
|
||||
}
|
||||
}
|
||||
|
||||
public object GetDataItem(int rowIndex, int columnIndex)
|
||||
{
|
||||
return this.array != null ? this.array[rowIndex, columnIndex] : null;
|
||||
}
|
||||
|
||||
public double GetValue(int rowIndex, int columnIndex)
|
||||
{
|
||||
return this.array[rowIndex, columnIndex].Value;
|
||||
}
|
||||
|
||||
public Color GetColor(int rowIndex, int columnIndex)
|
||||
{
|
||||
return this.array[rowIndex, columnIndex].Color;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
this.array = null;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,19 @@
|
|||
<Window x:Class="CustomHeatMapSourceAndDefinition.MainWindow"
|
||||
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"
|
||||
mc:Ignorable="d"
|
||||
Title="MainWindow">
|
||||
<Grid>
|
||||
<telerik:RadHeatMap x:Name="heatmap">
|
||||
<telerik:RadHeatMap.RowHeaderSettings>
|
||||
<telerik:HeatMapRowHeaderSettings LabelInterval="100" LabelClipToBounds="False" />
|
||||
</telerik:RadHeatMap.RowHeaderSettings>
|
||||
<telerik:RadHeatMap.ColumnHeaderSettings>
|
||||
<telerik:HeatMapColumnHeaderSettings LabelInterval="200" LabelClipToBounds="False" />
|
||||
</telerik:RadHeatMap.ColumnHeaderSettings>
|
||||
</telerik:RadHeatMap>
|
||||
</Grid>
|
||||
</Window>
|
|
@ -0,0 +1,35 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
|
||||
namespace CustomHeatMapSourceAndDefinition
|
||||
{
|
||||
public partial class MainWindow : Window
|
||||
{
|
||||
private static Random randomGenerator = new Random();
|
||||
private static List<Color> colors = new List<Color> { Colors.Red, Colors.DarkBlue, Colors.Cornsilk, Colors.DarkGoldenrod, Colors.LightBlue, };
|
||||
|
||||
public MainWindow()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
CustomHeatMapItem[,] data = this.GetData(2000, 3000);
|
||||
CustomHeatMapSource source = new CustomHeatMapSource(data);
|
||||
this.heatmap.Definition = new CustomHeatMapDefinition(source);
|
||||
}
|
||||
|
||||
private CustomHeatMapItem[,] GetData(int rowsCount, int columnsCount)
|
||||
{
|
||||
CustomHeatMapItem[,] data = new CustomHeatMapItem[rowsCount, columnsCount];
|
||||
for (int row = 0; row < rowsCount; row++)
|
||||
{
|
||||
for (int column = 0; column < columnsCount; column++)
|
||||
{
|
||||
data[row, column] = new CustomHeatMapItem { Value = row + column, Color = colors[randomGenerator.Next(0, colors.Count)] };
|
||||
}
|
||||
}
|
||||
return data;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,55 @@
|
|||
using System.Reflection;
|
||||
using System.Resources;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("CustomHeatMapSourceAndDefinition")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("CustomHeatMapSourceAndDefinition")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2018")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
//In order to begin building localizable applications, set
|
||||
//<UICulture>CultureYouAreCodingWith</UICulture> in your .csproj file
|
||||
//inside a <PropertyGroup>. For example, if you are using US english
|
||||
//in your source files, set the <UICulture> to en-US. Then uncomment
|
||||
//the NeutralResourceLanguage attribute below. Update the "en-US" in
|
||||
//the line below to match the UICulture setting in the project file.
|
||||
|
||||
//[assembly: NeutralResourcesLanguage("en-US", UltimateResourceFallbackLocation.Satellite)]
|
||||
|
||||
|
||||
[assembly: ThemeInfo(
|
||||
ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located
|
||||
//(used if a resource is not found in the page,
|
||||
// or application resource dictionaries)
|
||||
ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located
|
||||
//(used if a resource is not found in the page,
|
||||
// app, or any theme specific resource dictionaries)
|
||||
)]
|
||||
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
|
@ -0,0 +1,71 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace CustomHeatMapSource.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CustomHeatMapSource.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,117 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
|
@ -0,0 +1,30 @@
|
|||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace CustomHeatMapSource.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="uri:settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
|
@ -0,0 +1,5 @@
|
|||
## Custom HeatMap Source ##
|
||||
|
||||
An example that shows how to create a custom heatmap source, thus greatly improving the performance and the memory footprint. The example shows RadHeatMap populated with 4 million data items.
|
||||
|
||||
<keywords: lightning, fast, performance, memory, definition>
|
|
@ -1,6 +1,8 @@
|
|||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2012
|
||||
# Visual Studio 15
|
||||
VisualStudioVersion = 15.0.27703.2018
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PopulatingWithData", "PopulatingWithData\PopulatingWithData.csproj", "{19F12DA5-B2F5-40A0-99DC-8849E1BB1FF3}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Colorizers_CategoricalDefinition", "Colorizers_CategoricalDefinition\Colorizers_CategoricalDefinition.csproj", "{00BA2624-E743-4D20-B8A0-D162AD1D601C}"
|
||||
|
@ -9,8 +11,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Colorizers_VerticalDefiniti
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DragToSelect", "DragToSelect\DragToSelect.csproj", "{1325EE4F-4D09-4A18-908F-DD4F8D6BC873}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomHeatMapSourceAndDefinition", "CustomHeatMapSource\CustomHeatMapSourceAndDefinition.csproj", "{6FB84FBA-F62F-403A-A07F-7927EF34DEE8}"
|
||||
EndProject
|
||||
Global
|
||||
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
|
@ -32,8 +35,16 @@ Global
|
|||
{1325EE4F-4D09-4A18-908F-DD4F8D6BC873}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1325EE4F-4D09-4A18-908F-DD4F8D6BC873}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1325EE4F-4D09-4A18-908F-DD4F8D6BC873}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{6FB84FBA-F62F-403A-A07F-7927EF34DEE8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{6FB84FBA-F62F-403A-A07F-7927EF34DEE8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{6FB84FBA-F62F-403A-A07F-7927EF34DEE8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{6FB84FBA-F62F-403A-A07F-7927EF34DEE8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {9E7A2DDB-F14B-452B-BDF9-70BD314B9A33}
|
||||
EndGlobalSection
|
||||
|
||||
EndGlobal
|
||||
|
|
Двоичные данные
PdfViewer/FirstLook/SampleData/Sample.pdf
Двоичные данные
PdfViewer/FirstLook/SampleData/Sample.pdf
Двоичный файл не отображается.
|
@ -14,7 +14,7 @@
|
|||
<pivot:AdomdConnectionSettings
|
||||
Cube="Adventure Works"
|
||||
Database="Adventure Works DW 2008R2"
|
||||
ConnectionString="Data Source=http://demos.telerik.com/olap/msmdpump.dll;Catalog=Adventure Works DW 2008R2"/>
|
||||
ConnectionString="Data Source=https://demos.telerik.com/olap/msmdpump.dll;Catalog=Adventure Works DW 2008R2"/>
|
||||
</pivot:AdomdDataProvider.ConnectionSettings>
|
||||
|
||||
<pivot:AdomdDataProvider.FilterDescriptions>
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{F2FFB684-83F5-4591-9082-920DC64FEA0B}</ProjectGuid>
|
||||
<ProjectGuid>{B7FE29EE-43EA-4228-B90C-914255EF0D3F}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>QueryableDataProviderPersistence</RootNamespace>
|
||||
|
@ -55,7 +55,6 @@
|
|||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>lib\EntityFramework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
|
@ -73,39 +72,30 @@
|
|||
<RequiredTargetFramework>4.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Pivot.Core">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Pivot.Core.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Pivot.DataProviders.Queryable">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Pivot.DataProviders.Queryable.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.Input">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.Input.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.Navigation">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.Navigation.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.Pivot">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.Pivot.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Controls.PivotFieldList">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Controls.PivotFieldList.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.PersistenceFramework">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.PersistenceFramework.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Telerik.Windows.Data">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>$(TELERIKWPFDIR)\Binaries\WPF40\Telerik.Windows.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="WindowsBase" />
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<pivot:XmlaConnectionSettings
|
||||
Cube="Adventure Works"
|
||||
Database="Adventure Works DW 2008R2"
|
||||
ServerAddress="http://demos.telerik.com/olap/msmdpump.dll"/>
|
||||
ServerAddress="https://demos.telerik.com/olap/msmdpump.dll"/>
|
||||
</pivot:XmlaDataProvider.ConnectionSettings>
|
||||
|
||||
<pivot:XmlaDataProvider.FilterDescriptions>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<pivot:AdomdConnectionSettings
|
||||
Cube="Adventure Works"
|
||||
Database="Adventure Works DW 2008R2"
|
||||
ConnectionString="Data Source=http://demos.telerik.com/olap/msmdpump.dll;Catalog=Adventure Works DW 2008R2"/>
|
||||
ConnectionString="Data Source=https://demos.telerik.com/olap/msmdpump.dll;Catalog=Adventure Works DW 2008R2"/>
|
||||
</pivot:AdomdDataProvider.ConnectionSettings>
|
||||
|
||||
<pivot:AdomdDataProvider.FilterDescriptions>
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
<pivot:XmlaConnectionSettings
|
||||
Cube="Adventure Works"
|
||||
Database="Adventure Works DW 2008R2"
|
||||
ServerAddress="http://demos.telerik.com/olap/msmdpump.dll"/>
|
||||
ServerAddress="https://demos.telerik.com/olap/msmdpump.dll"/>
|
||||
</pivot:XmlaDataProvider.ConnectionSettings>
|
||||
|
||||
<pivot:XmlaDataProvider.FilterDescriptions>
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
<pivot:AdomdConnectionSettings
|
||||
Cube="Adventure Works"
|
||||
Database="Adventure Works DW 2008R2"
|
||||
ConnectionString="Provider=MSOLAP.5;Data Source=http://demos.telerik.com/olap/msmdpump.dll;Initial Catalog=Adventure Works DW 2008R2;">
|
||||
ConnectionString="Provider=MSOLAP.5;Data Source=https://demos.telerik.com/olap/msmdpump.dll;Initial Catalog=Adventure Works DW 2008R2;">
|
||||
</pivot:AdomdConnectionSettings>
|
||||
</pivot:AdomdDataProvider.ConnectionSettings>
|
||||
<pivot:AdomdDataProvider.RowGroupDescriptions>
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<pivot:XmlaConnectionSettings
|
||||
Cube="Adventure Works"
|
||||
Database="Adventure Works DW 2008R2"
|
||||
ServerAddress="http://demos.telerik.com/olap/msmdpump.dll"/>
|
||||
ServerAddress="https://demos.telerik.com/olap/msmdpump.dll"/>
|
||||
</pivot:XmlaDataProvider.ConnectionSettings>
|
||||
|
||||
<pivot:XmlaDataProvider.RowGroupDescriptions>
|
||||
|
|
|
@ -8,7 +8,7 @@ namespace CustomField
|
|||
public class CustomField : CodeBasedField
|
||||
{
|
||||
private static readonly string FieldType = "CUSTOMFIELD";
|
||||
|
||||
|
||||
public override string FieldTypeName
|
||||
{
|
||||
get
|
||||
|
@ -16,7 +16,7 @@ namespace CustomField
|
|||
return CustomField.FieldType;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static CustomField()
|
||||
{
|
||||
CodeBasedFieldFactory.RegisterFieldType(CustomField.FieldType, () => new CustomField());
|
||||
|
@ -43,9 +43,12 @@ namespace CustomField
|
|||
totalPageInCurrentSection = this.GetPageCountInSection(box);
|
||||
}
|
||||
|
||||
return DocumentFragment.CreateFromInline(new Span(
|
||||
string.Format("Total pages in the document: {0}. Pages in current section: {1} / {2}",
|
||||
totalPageCount, currentPageInCurrentSection, totalPageInCurrentSection)));
|
||||
Span currentSpan = this.EvaluationContext.Document.CaretPosition.GetCurrentSpan();
|
||||
Span spanToInsert = new Span(
|
||||
string.Format("Total pages in the document: {0}. Pages in current section: {1} / {2}",
|
||||
totalPageCount, currentPageInCurrentSection, totalPageInCurrentSection));
|
||||
spanToInsert.CopyPropertiesFrom(currentSpan);
|
||||
return DocumentFragment.CreateFromInline(spanToInsert);
|
||||
}
|
||||
|
||||
private int GetCurrentPageFromSectionPages(LayoutBox box)
|
||||
|
|
Загрузка…
Ссылка в новой задаче