Added minimal example of how CefSharp can be used. Only WPF so far.

This commit is contained in:
Per Lundberg
2013-11-12 13:14:11 +02:00
parent 4c389d8eba
commit 58792baa5e
22 changed files with 846 additions and 0 deletions

View File

@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq.Expressions;
namespace CefSharp.MinimalExample.Wpf.Mvvm
{
public static class PropertyChangedExtensionMethods
{
// Based on http://www.wpftutorial.net/INotifyPropertyChanged.html
public static bool ChangeAndNotify<T>(this PropertyChangedEventHandler handler,
ref T field, T value, Expression<Func<T>> memberExpression)
{
if (memberExpression == null)
{
throw new ArgumentNullException("memberExpression");
}
var body = memberExpression.Body as MemberExpression;
if (body == null)
{
throw new ArgumentException("Lambda must return a property.");
}
if (EqualityComparer<T>.Default.Equals(field, value))
{
return false;
}
field = value;
var vmExpression = body.Expression as ConstantExpression;
if (vmExpression != null)
{
var lambda = Expression.Lambda(vmExpression);
var vmFunc = lambda.Compile();
var sender = vmFunc.DynamicInvoke();
if (handler != null)
{
handler(sender, new PropertyChangedEventArgs(body.Member.Name));
}
}
return true;
}
}
}