Skip to content

Commit ea1d236

Browse files
authored
Merge pull request #2458 from eng-myousif/mo_youssef/enable_extending_drawable_control_with_custom_canvas
Make use of the virtual method `CreateControl` on wpf `DrawableHandler`
2 parents 2c752dd + d02c3ba commit ea1d236

File tree

1 file changed

+20
-7
lines changed

1 file changed

+20
-7
lines changed

src/Eto.Wpf/Forms/Controls/DrawableHandler.cs

+20-7
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,12 @@
1111

1212
namespace Eto.Wpf.Forms.Controls
1313
{
14-
public class DrawableHandler : WpfPanel<swc.Canvas, Drawable, Drawable.ICallback>, Drawable.IHandler
14+
public class DrawableHandler : DrawableHandler<swc.Canvas, Drawable, Drawable.ICallback> { }
15+
16+
public class DrawableHandler<TControl, TWidget, TCallback> : WpfPanel<TControl, TWidget, TCallback>, Drawable.IHandler
17+
where TControl : swc.Canvas
18+
where TWidget : Drawable
19+
where TCallback : Drawable.ICallback
1520
{
1621
bool tiled;
1722
sw.FrameworkElement content;
@@ -51,9 +56,9 @@ public Size TileSize
5156
}
5257
}
5358

54-
class EtoMainCanvas : swc.Canvas
59+
public class EtoMainCanvas : swc.Canvas
5560
{
56-
public DrawableHandler Handler { get; set; }
61+
public DrawableHandler<TControl, TWidget, TCallback> Handler { get; set; }
5762

5863
protected override void OnMouseDown(sw.Input.MouseButtonEventArgs e)
5964
{
@@ -111,7 +116,7 @@ protected override sw.Size ArrangeOverride(sw.Size arrangeSize)
111116
class EtoTile : sw.FrameworkElement
112117
{
113118
Rectangle bounds;
114-
public DrawableHandler Handler { get; set; }
119+
public DrawableHandler<TControl, TWidget, TCallback> Handler { get; set; }
115120

116121
public Rectangle Bounds
117122
{
@@ -163,18 +168,26 @@ public override void OnUnLoad(EventArgs e)
163168
UnRegisterScrollable();
164169
}
165170

166-
public void Create()
171+
protected override TControl CreateControl()
167172
{
168-
Control = new EtoMainCanvas
173+
return new EtoMainCanvas
169174
{
170175
Handler = this,
171176
SnapsToDevicePixels = true,
172177
FocusVisualStyle = null,
173178
Background = swm.Brushes.Transparent
174-
};
179+
} as TControl;
180+
}
181+
182+
protected override void Initialize()
183+
{
184+
base.Initialize();
185+
175186
Control.Loaded += Control_Loaded;
176187
}
177188

189+
public void Create() { }
190+
178191
public void Create(bool largeCanvas)
179192
{
180193
AllowTiling = largeCanvas;

0 commit comments

Comments
 (0)