or
<
Window
x:Class
=
"RulerMemoryLeakDemo.MainWindow"
Title
=
"MainWindow"
Height
=
"350"
Width
=
"525"
>
<
Grid
>
<
Grid.RowDefinitions
>
<
RowDefinition
Height
=
"25"
/>
<
RowDefinition
Height
=
"*"
/>
</
Grid.RowDefinitions
>
<
StackPanel
Grid.Row
=
"0"
Orientation
=
"Horizontal"
>
<
Button
Click
=
"ButtonBase_OnClick"
>New Editor</
Button
>
</
StackPanel
>
<
StackPanel
Grid.Row
=
"1"
Name
=
"editHost"
></
StackPanel
>
</
Grid
>
</
Window
>
using
System.ComponentModel;
using
System.Windows;
namespace
RulerMemoryLeakDemo
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public
partial
class
MainWindow : Window
{
public
class
EditorViewModel : INotifyPropertyChanged
{
private
string
_rtf = @"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang9\f0\fs22 RTF File - Hello World\par
}";
public
string
Rtf
{
get
{
return
_rtf; }
set
{
_rtf = value;
OnPropertyChanged(
"Rtf"
);
}
}
public
event
PropertyChangedEventHandler PropertyChanged;
protected
virtual
void
OnPropertyChanged(
string
propertyName)
{
var handler = PropertyChanged;
if
(handler !=
null
)
handler(
this
,
new
PropertyChangedEventArgs(propertyName));
}
}
public
MainWindow()
{
InitializeComponent();
}
private
void
ButtonBase_OnClick(
object
sender, RoutedEventArgs e)
{
editHost.Children.Clear();
var viewModel =
new
EditorViewModel();
var view =
new
EditorView {DataContext = viewModel};
editHost.Children.Add(view);
}
}
}
<UserControl
xmlns:telerik=
"http://schemas.telerik.com/2008/xaml/presentation"
x:Class=
"RulerMemoryLeakDemo.EditorView"
mc:Ignorable=
"d"
d:DesignHeight=
"300"
d:DesignWidth=
"1000"
FontFamily=
"Arial"
FontSize=
"11"
>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height=
"*"
/>
</Grid.RowDefinitions>
<telerik:DocumentRuler Grid.Row=
"0"
AssociatedRichTextBox=
"{Binding ElementName=editor, Mode=OneTime}"
/>
<telerik:RadRichTextBox x:Name=
"editor"
Margin=
"24 24 0 0"
Grid.Row=
"0"
LayoutMode=
"Flow"
/>
<telerik:RtfDataProvider x:Name=
"rtfProvider"
RichTextBox=
"{Binding ElementName=editor}"
Rtf=
"{Binding Path=Rtf, Mode=TwoWay}"
/>
</Grid>
</UserControl>
using
System.Windows.Controls;
namespace
RulerMemoryLeakDemo
{
public
partial
class
EditorView : UserControl
{
public
EditorView()
{
InitializeComponent();
}
}
}
new
DummyModel { Name =
"Bob"
, Test =
"A"
, Part =
"i"
, Score = 12},
new
DummyModel { Name =
"Bob"
, Test =
"A"
, Part =
"ii"
, Score = 11},
new
DummyModel { Name =
"Bob"
, Test =
"B"
, Part =
"i"
, Score = 15},
new
DummyModel { Name =
"Bob"
, Test =
"B"
, Part =
"ii"
, Score = 16},
new
DummyModel { Name =
"Sue"
, Test =
"A"
, Part =
"i"
, Score = 6},
new
DummyModel { Name =
"Sue"
, Test =
"A"
, Part =
"ii"
, Score = 14},
new
DummyModel { Name =
"Sue"
, Test =
"B"
, Part =
"i"
, Score = 22},
new
DummyModel { Name =
"Sue"
, Test =
"B"
, Part =
"ii"
, Score = 18},
public
FrameworkElement CreateDragVisual(DragVisualProviderState state)
{
var visual =
new
ContentControl();
var theme = StyleManager.GetTheme(state.Host);
if
(theme !=
null
)
{
StyleManager.SetTheme(visual, theme);
}
var draggedItem = state.DraggedItemContainers.First()
as
FrameworkElement;
visual.Height = draggedItem.ActualHeight;
visual.Width = draggedItem.ActualWidth;
visual.Content = state.DraggedItems.OfType<
object
>().FirstOrDefault();
visual.ContentTemplate =
this
.DragVisualTemplate;
return
visual;
}