Detailed info at http://www.galasoft.ch/mvvmbl15
Bug correction in Messenger: Made CleanupList thread safe. Bug correction: Removed AllowPartiallyTrustedCallers to avoid issues with EventToCommand. EventToCommand can now be attached to Storyboards and other DependendencyObjects (does not work in WPF or WP7) Added NotifyPropertyChanged class and made ViewModelBase inherit from it. ViewModelBase does not implement IDisposable anymore. Generating XML documentation file also in Release mode. Cleaned up RelayCommand (no new functionality). Added WP7 unit test project to WP7 solution and removed from global solution (to avoid starting the emulator every time). A few other cleanup changes. Added BAT file utility to copy all DLLs in a _Binaries folder (making it easier to install a new version to C:\Program Files\Laurent Bugnion (GalaSoft)\MVVM Light Toolkit\Binaries).
This commit is contained in:
Родитель
ca92dfbfa2
Коммит
1a142cf254
|
@ -79,8 +79,6 @@ namespace GalaSoft.MvvmLight.Command
|
|||
/// <summary>
|
||||
/// Raises the <see cref="CanExecuteChanged" /> event.
|
||||
/// </summary>
|
||||
[SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic",
|
||||
Justification = "The this keyword is used in the Silverlight version")]
|
||||
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
|
||||
Justification = "This cannot be an event")]
|
||||
public void RaiseCanExecuteChanged()
|
||||
|
|
|
@ -74,8 +74,6 @@ namespace GalaSoft.MvvmLight.Command
|
|||
/// <summary>
|
||||
/// Raises the <see cref="CanExecuteChanged" /> event.
|
||||
/// </summary>
|
||||
[SuppressMessage("Microsoft.Performance", "CA1822:MarkMembersAsStatic",
|
||||
Justification = "The this keyword is used in the Silverlight version")]
|
||||
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
|
||||
Justification = "This cannot be an event")]
|
||||
public void RaiseCanExecuteChanged()
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<DocumentationFile>bin\Release\GalaSoft.MvvmLight.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="PresentationCore">
|
||||
|
@ -98,6 +99,7 @@
|
|||
<Compile Include="Messaging\MessageBase.cs" />
|
||||
<Compile Include="Messaging\Messenger.cs" />
|
||||
<Compile Include="Messaging\PropertyChangedMessage.cs" />
|
||||
<Compile Include="NotifyPropertyChanged.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Command\RelayCommand.cs" />
|
||||
<Compile Include="Command\RelayCommandGeneric.cs" />
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
// **************************************************************************
|
||||
// ****************************************************************************
|
||||
// <copyright file="Messenger.cs" company="GalaSoft Laurent Bugnion">
|
||||
// Copyright © GalaSoft Laurent Bugnion 2009-2011
|
||||
// </copyright>
|
||||
|
@ -11,7 +11,7 @@
|
|||
// <license>
|
||||
// See license.txt in this project or http://www.galasoft.ch/license_MIT.txt
|
||||
// </license>
|
||||
// <LastBaseLevel>BL0012</LastBaseLevel>
|
||||
// <LastBaseLevel>BL0013</LastBaseLevel>
|
||||
// ****************************************************************************
|
||||
|
||||
using System;
|
||||
|
@ -28,17 +28,16 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
/// The Messenger is a class allowing objects to exchange messages.
|
||||
/// </summary>
|
||||
////[ClassInfo(typeof(Messenger),
|
||||
//// VersionString = "4.0.0.0/BL0012",
|
||||
//// DateString = "201102061040",
|
||||
//// VersionString = "4.0.0.0/BL0013",
|
||||
//// DateString = "201103201550",
|
||||
//// Description = "A messenger class allowing a class to send a message to multiple recipients",
|
||||
//// UrlContacts = "http://www.galasoft.ch/contact_en.html",
|
||||
//// Email = "laurent@galasoft.ch")]
|
||||
public class Messenger : IMessenger
|
||||
{
|
||||
private static Messenger _defaultInstance;
|
||||
|
||||
private readonly object _registerLock = new object();
|
||||
private Dictionary<Type, List<WeakActionAndToken>> _recipientsOfSubclassesAction;
|
||||
|
||||
private Dictionary<Type, List<WeakActionAndToken>> _recipientsStrictAction;
|
||||
|
||||
/// <summary>
|
||||
|
@ -53,23 +52,7 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Provides a way to override the Messenger.Default instance with
|
||||
/// a custom instance, for example for unit testing purposes.
|
||||
/// </summary>
|
||||
/// <param name="newMessenger">The instance that will be used as Messenger.Default.</param>
|
||||
public static void OverrideDefault(Messenger newMessenger)
|
||||
{
|
||||
_defaultInstance = newMessenger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the Messenger's default (static) instance to null.
|
||||
/// </summary>
|
||||
public static void Reset()
|
||||
{
|
||||
_defaultInstance = null;
|
||||
}
|
||||
#region IMessenger Members
|
||||
|
||||
/// <summary>
|
||||
/// Registers a recipient for a type of message TMessage. The action
|
||||
|
@ -177,49 +160,52 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
bool receiveDerivedMessagesToo,
|
||||
Action<TMessage> action)
|
||||
{
|
||||
var messageType = typeof(TMessage);
|
||||
|
||||
Dictionary<Type, List<WeakActionAndToken>> recipients;
|
||||
|
||||
if (receiveDerivedMessagesToo)
|
||||
lock (_registerLock)
|
||||
{
|
||||
if (_recipientsOfSubclassesAction == null)
|
||||
Type messageType = typeof(TMessage);
|
||||
|
||||
Dictionary<Type, List<WeakActionAndToken>> recipients;
|
||||
|
||||
if (receiveDerivedMessagesToo)
|
||||
{
|
||||
_recipientsOfSubclassesAction = new Dictionary<Type, List<WeakActionAndToken>>();
|
||||
if (_recipientsOfSubclassesAction == null)
|
||||
{
|
||||
_recipientsOfSubclassesAction = new Dictionary<Type, List<WeakActionAndToken>>();
|
||||
}
|
||||
|
||||
recipients = _recipientsOfSubclassesAction;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_recipientsStrictAction == null)
|
||||
{
|
||||
_recipientsStrictAction = new Dictionary<Type, List<WeakActionAndToken>>();
|
||||
}
|
||||
|
||||
recipients = _recipientsStrictAction;
|
||||
}
|
||||
|
||||
recipients = _recipientsOfSubclassesAction;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (_recipientsStrictAction == null)
|
||||
List<WeakActionAndToken> list;
|
||||
|
||||
if (!recipients.ContainsKey(messageType))
|
||||
{
|
||||
_recipientsStrictAction = new Dictionary<Type, List<WeakActionAndToken>>();
|
||||
list = new List<WeakActionAndToken>();
|
||||
recipients.Add(messageType, list);
|
||||
}
|
||||
else
|
||||
{
|
||||
list = recipients[messageType];
|
||||
}
|
||||
|
||||
recipients = _recipientsStrictAction;
|
||||
var weakAction = new WeakAction<TMessage>(recipient, action);
|
||||
var item = new WeakActionAndToken
|
||||
{
|
||||
Action = weakAction,
|
||||
Token = token
|
||||
};
|
||||
list.Add(item);
|
||||
}
|
||||
|
||||
List<WeakActionAndToken> list;
|
||||
|
||||
if (!recipients.ContainsKey(messageType))
|
||||
{
|
||||
list = new List<WeakActionAndToken>();
|
||||
recipients.Add(messageType, list);
|
||||
}
|
||||
else
|
||||
{
|
||||
list = recipients[messageType];
|
||||
}
|
||||
|
||||
var weakAction = new WeakAction<TMessage>(recipient, action);
|
||||
var item = new WeakActionAndToken
|
||||
{
|
||||
Action = weakAction,
|
||||
Token = token
|
||||
};
|
||||
list.Add(item);
|
||||
|
||||
Cleanup();
|
||||
}
|
||||
|
||||
|
@ -358,6 +344,26 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
Cleanup();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>
|
||||
/// Provides a way to override the Messenger.Default instance with
|
||||
/// a custom instance, for example for unit testing purposes.
|
||||
/// </summary>
|
||||
/// <param name="newMessenger">The instance that will be used as Messenger.Default.</param>
|
||||
public static void OverrideDefault(Messenger newMessenger)
|
||||
{
|
||||
_defaultInstance = newMessenger;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Sets the Messenger's default (static) instance to null.
|
||||
/// </summary>
|
||||
public static void Reset()
|
||||
{
|
||||
_defaultInstance = null;
|
||||
}
|
||||
|
||||
private static void CleanupList(IDictionary<Type, List<WeakActionAndToken>> lists)
|
||||
{
|
||||
if (lists == null)
|
||||
|
@ -365,33 +371,36 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
return;
|
||||
}
|
||||
|
||||
var listsToRemove = new List<Type>();
|
||||
foreach (var list in lists)
|
||||
lock (lists)
|
||||
{
|
||||
var recipientsToRemove = new List<WeakActionAndToken>();
|
||||
foreach (var item in list.Value)
|
||||
var listsToRemove = new List<Type>();
|
||||
foreach (var list in lists)
|
||||
{
|
||||
if (item.Action == null
|
||||
|| !item.Action.IsAlive)
|
||||
var recipientsToRemove = new List<WeakActionAndToken>();
|
||||
foreach (WeakActionAndToken item in list.Value)
|
||||
{
|
||||
recipientsToRemove.Add(item);
|
||||
if (item.Action == null
|
||||
|| !item.Action.IsAlive)
|
||||
{
|
||||
recipientsToRemove.Add(item);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (WeakActionAndToken recipient in recipientsToRemove)
|
||||
{
|
||||
list.Value.Remove(recipient);
|
||||
}
|
||||
|
||||
if (list.Value.Count == 0)
|
||||
{
|
||||
listsToRemove.Add(list.Key);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var recipient in recipientsToRemove)
|
||||
foreach (Type key in listsToRemove)
|
||||
{
|
||||
list.Value.Remove(recipient);
|
||||
lists.Remove(key);
|
||||
}
|
||||
|
||||
if (list.Value.Count == 0)
|
||||
{
|
||||
listsToRemove.Add(list.Key);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var key in listsToRemove)
|
||||
{
|
||||
lists.Remove(key);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -403,8 +412,8 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
return false;
|
||||
}
|
||||
|
||||
var interfaces = instanceType.GetInterfaces();
|
||||
foreach (var currentInterface in interfaces)
|
||||
Type[] interfaces = instanceType.GetInterfaces();
|
||||
foreach (Type currentInterface in interfaces)
|
||||
{
|
||||
if (currentInterface == interfaceType)
|
||||
{
|
||||
|
@ -425,9 +434,9 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
{
|
||||
// Clone to protect from people registering in a "receive message" method
|
||||
// Bug correction Messaging BL0004.007
|
||||
var listClone = list.Take(list.Count()).ToList();
|
||||
List<WeakActionAndToken> listClone = list.Take(list.Count()).ToList();
|
||||
|
||||
foreach (var item in listClone)
|
||||
foreach (WeakActionAndToken item in listClone)
|
||||
{
|
||||
var executeAction = item.Action as IExecuteWithObject;
|
||||
|
||||
|
@ -457,11 +466,11 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
|
||||
lock (lists)
|
||||
{
|
||||
foreach (var messageType in lists.Keys)
|
||||
foreach (Type messageType in lists.Keys)
|
||||
{
|
||||
foreach (var item in lists[messageType])
|
||||
foreach (WeakActionAndToken item in lists[messageType])
|
||||
{
|
||||
var weakAction = item.Action;
|
||||
WeakAction weakAction = item.Action;
|
||||
|
||||
if (weakAction != null
|
||||
&& recipient == weakAction.Target)
|
||||
|
@ -479,7 +488,7 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
Action<TMessage> action,
|
||||
Dictionary<Type, List<WeakActionAndToken>> lists)
|
||||
{
|
||||
var messageType = typeof(TMessage);
|
||||
Type messageType = typeof(TMessage);
|
||||
|
||||
if (recipient == null
|
||||
|| lists == null
|
||||
|
@ -491,7 +500,7 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
|
||||
lock (lists)
|
||||
{
|
||||
foreach (var item in lists[messageType])
|
||||
foreach (WeakActionAndToken item in lists[messageType])
|
||||
{
|
||||
var weakActionCasted = item.Action as WeakAction<TMessage>;
|
||||
|
||||
|
@ -516,15 +525,16 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
|
||||
private void SendToTargetOrType<TMessage>(TMessage message, Type messageTargetType, object token)
|
||||
{
|
||||
var messageType = typeof(TMessage);
|
||||
Type messageType = typeof(TMessage);
|
||||
|
||||
if (_recipientsOfSubclassesAction != null)
|
||||
{
|
||||
// Clone to protect from people registering in a "receive message" method
|
||||
// Bug correction Messaging BL0008.002
|
||||
var listClone = _recipientsOfSubclassesAction.Keys.Take(_recipientsOfSubclassesAction.Count()).ToList();
|
||||
List<Type> listClone =
|
||||
_recipientsOfSubclassesAction.Keys.Take(_recipientsOfSubclassesAction.Count()).ToList();
|
||||
|
||||
foreach (var type in listClone)
|
||||
foreach (Type type in listClone)
|
||||
{
|
||||
List<WeakActionAndToken> list = null;
|
||||
|
||||
|
@ -543,7 +553,7 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
{
|
||||
if (_recipientsStrictAction.ContainsKey(messageType))
|
||||
{
|
||||
var list = _recipientsStrictAction[messageType];
|
||||
List<WeakActionAndToken> list = _recipientsStrictAction[messageType];
|
||||
SendToList(message, list, messageTargetType, token);
|
||||
}
|
||||
}
|
||||
|
@ -551,11 +561,15 @@ namespace GalaSoft.MvvmLight.Messaging
|
|||
Cleanup();
|
||||
}
|
||||
|
||||
#region Nested type: WeakActionAndToken
|
||||
|
||||
private struct WeakActionAndToken
|
||||
{
|
||||
public WeakAction Action;
|
||||
|
||||
public object Token;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
|
@ -0,0 +1,129 @@
|
|||
using System;
|
||||
using System.ComponentModel;
|
||||
using System.Diagnostics;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Linq.Expressions;
|
||||
using System.Reflection;
|
||||
|
||||
namespace GalaSoft.MvvmLight
|
||||
{
|
||||
/// <summary>
|
||||
/// A base class for the ViewModel classes in the MVVM pattern.
|
||||
/// </summary>
|
||||
//// [ClassInfo(typeof(ViewModelBase))]
|
||||
public abstract class NotifyPropertyChanged : INotifyPropertyChanged
|
||||
{
|
||||
/// <summary>
|
||||
/// Occurs when a property value changes.
|
||||
/// </summary>
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
/// <summary>
|
||||
/// Provides access to the PropertyChanged event handler to derived classes.
|
||||
/// </summary>
|
||||
protected PropertyChangedEventHandler PropertyChangedHandler
|
||||
{
|
||||
get
|
||||
{
|
||||
return PropertyChanged;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that a property name exists in this ViewModel. This method
|
||||
/// can be called before the property is used, for instance before
|
||||
/// calling RaisePropertyChanged. It avoids errors when a property name
|
||||
/// is changed but some places are missed.
|
||||
/// <para>This method is only active in DEBUG mode.</para>
|
||||
/// </summary>
|
||||
/// <param name="propertyName"></param>
|
||||
[Conditional("DEBUG")]
|
||||
[DebuggerStepThrough]
|
||||
public void VerifyPropertyName(string propertyName)
|
||||
{
|
||||
var myType = this.GetType();
|
||||
if (myType.GetProperty(propertyName) == null)
|
||||
{
|
||||
throw new ArgumentException("Property not found", propertyName);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Raises the PropertyChanged event if needed.
|
||||
/// </summary>
|
||||
/// <remarks>If the propertyName parameter
|
||||
/// does not correspond to an existing property on the current class, an
|
||||
/// exception is thrown in DEBUG configuration only.</remarks>
|
||||
/// <param name="propertyName">The name of the property that
|
||||
/// changed.</param>
|
||||
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
|
||||
Justification = "This cannot be an event")]
|
||||
protected virtual void RaisePropertyChanged(string propertyName)
|
||||
{
|
||||
VerifyPropertyName(propertyName);
|
||||
|
||||
var handler = PropertyChanged;
|
||||
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Raises the PropertyChanged event if needed.
|
||||
/// </summary>
|
||||
/// <typeparam name="T">The type of the property that
|
||||
/// changed.</typeparam>
|
||||
/// <param name="propertyExpression">An expression identifying the property
|
||||
/// that changed.</param>
|
||||
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
|
||||
Justification = "This cannot be an event")]
|
||||
[SuppressMessage(
|
||||
"Microsoft.Design",
|
||||
"CA1006:GenericMethodsShouldProvideTypeParameter",
|
||||
Justification = "This syntax is more convenient than other alternatives.")]
|
||||
protected virtual void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)
|
||||
{
|
||||
if (propertyExpression == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var handler = PropertyChanged;
|
||||
|
||||
if (handler != null)
|
||||
{
|
||||
var body = propertyExpression.Body as MemberExpression;
|
||||
var expression = body.Expression as ConstantExpression;
|
||||
handler(expression.Value, new PropertyChangedEventArgs(body.Member.Name));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When called in a property setter, raises the PropertyChanged event for
|
||||
/// the current property.
|
||||
/// </summary>
|
||||
/// <exception cref="InvalidOperationException">If this method is called outside
|
||||
/// of a property setter.</exception>
|
||||
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
|
||||
Justification = "This cannot be an event")]
|
||||
protected virtual void RaisePropertyChanged()
|
||||
{
|
||||
var frames = new StackTrace();
|
||||
|
||||
for (var i = 0; i < frames.FrameCount; i++)
|
||||
{
|
||||
var frame = frames.GetFrame(i).GetMethod() as MethodInfo;
|
||||
if (frame != null)
|
||||
if (frame.IsSpecialName && frame.Name.StartsWith("set_", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
RaisePropertyChanged(frame.Name.Substring(4));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("This method can only by invoked within a property setter.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -18,4 +18,4 @@ using System.Runtime.InteropServices;
|
|||
using System.Security;
|
||||
|
||||
[assembly: Guid("3cdfebcb-6e89-4a28-80eb-8c8d18fed4b7")]
|
||||
[assembly: AllowPartiallyTrustedCallers]
|
||||
//[assembly: AllowPartiallyTrustedCallers]
|
|
@ -11,7 +11,7 @@
|
|||
// <license>
|
||||
// See license.txt in this project or http://www.galasoft.ch/license_MIT.txt
|
||||
// </license>
|
||||
// <LastBaseLevel>alpha1/BL0014</LastBaseLevel>
|
||||
// <LastBaseLevel>BL0015</LastBaseLevel>
|
||||
// ****************************************************************************
|
||||
|
||||
using System;
|
||||
|
@ -32,7 +32,7 @@ using System.Runtime.InteropServices;
|
|||
[assembly: CLSCompliant(true)]
|
||||
|
||||
////[assembly: AssemblyVersion("3.0.0.*")]
|
||||
[assembly: AssemblyFileVersion("4.0.0.0/BL0014")]
|
||||
[assembly: AssemblyFileVersion("4.0.0.0/BL0015")]
|
||||
|
||||
// FxCop
|
||||
[module: SuppressMessage("Microsoft.Naming",
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
// <license>
|
||||
// See license.txt in this project or http://www.galasoft.ch/license_MIT.txt
|
||||
// </license>
|
||||
// <LastBaseLevel>BL0009</LastBaseLevel>
|
||||
// <LastBaseLevel>BL0010</LastBaseLevel>
|
||||
// ****************************************************************************
|
||||
|
||||
using System;
|
||||
|
@ -29,17 +29,18 @@ namespace GalaSoft.MvvmLight
|
|||
{
|
||||
/// <summary>
|
||||
/// A base class for the ViewModel classes in the MVVM pattern.
|
||||
/// <para>The IDisposable implementation of this class is obsolete, and
|
||||
/// should not be used anymore. It will be removed in a future version.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
//// [ClassInfo(typeof(ViewModelBase),
|
||||
//// VersionString = "4.0.0.0/BL0009",
|
||||
//// DateString = "201102062240",
|
||||
//// VersionString = "4.0.0.0/BL0010",
|
||||
//// DateString = "201103201555",
|
||||
//// Description = "A base class for the ViewModel classes in the MVVM pattern.",
|
||||
//// UrlContacts = "http://www.galasoft.ch/contact_en.html",
|
||||
//// Email = "laurent@galasoft.ch")]
|
||||
public abstract class ViewModelBase : INotifyPropertyChanged, ICleanup, IDisposable
|
||||
[SuppressMessage(
|
||||
"Microsoft.Design",
|
||||
"CA1012",
|
||||
Justification = "Constructors should remain public to allow serialization.")]
|
||||
public abstract class ViewModelBase : NotifyPropertyChanged, ICleanup
|
||||
{
|
||||
private static bool? _isInDesignMode;
|
||||
private IMessenger _messengerInstance;
|
||||
|
@ -143,39 +144,6 @@ namespace GalaSoft.MvvmLight
|
|||
Messenger.Default.Unregister(this);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Do not use this method anymore, it will be removed in a future
|
||||
/// version. Use ICleanup.Cleanup() instead.
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
Dispose(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Occurs when a property value changes.
|
||||
/// </summary>
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
/// <summary>
|
||||
/// Verifies that a property name exists in this ViewModel. This method
|
||||
/// can be called before the property is used, for instance before
|
||||
/// calling RaisePropertyChanged. It avoids errors when a property name
|
||||
/// is changed but some places are missed.
|
||||
/// <para>This method is only active in DEBUG mode.</para>
|
||||
/// </summary>
|
||||
/// <param name="propertyName"></param>
|
||||
[Conditional("DEBUG")]
|
||||
[DebuggerStepThrough]
|
||||
public void VerifyPropertyName(string propertyName)
|
||||
{
|
||||
var myType = this.GetType();
|
||||
if (myType.GetProperty(propertyName) == null)
|
||||
{
|
||||
throw new ArgumentException("Property not found", propertyName);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Broadcasts a PropertyChangedMessage using either the instance of
|
||||
/// the Messenger that was passed to this class (if available)
|
||||
|
@ -195,20 +163,6 @@ namespace GalaSoft.MvvmLight
|
|||
MessengerInstance.Send(message);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Do not use this method anymore, it will be removed in a future
|
||||
/// version. Use ICleanup.Cleanup() instead.
|
||||
/// </summary>
|
||||
[Obsolete("This interface will be removed from ViewModelBase in a future version, use ICleanup.Cleanup instead."
|
||||
)]
|
||||
protected virtual void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
Cleanup();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Raises the PropertyChanged event if needed, and broadcasts a
|
||||
/// PropertyChangedMessage using the Messenger instance (or the
|
||||
|
@ -224,6 +178,9 @@ namespace GalaSoft.MvvmLight
|
|||
/// occurred.</param>
|
||||
/// <param name="broadcast">If true, a PropertyChangedMessage will
|
||||
/// be broadcasted. If false, only the event will be raised.</param>
|
||||
/// <remarks>If the propertyName parameter
|
||||
/// does not correspond to an existing property on the current class, an
|
||||
/// exception is thrown in DEBUG configuration only.</remarks>
|
||||
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
|
||||
Justification = "This cannot be an event")]
|
||||
protected virtual void RaisePropertyChanged<T>(string propertyName, T oldValue, T newValue, bool broadcast)
|
||||
|
@ -237,41 +194,26 @@ namespace GalaSoft.MvvmLight
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Raises the PropertyChanged event if needed.
|
||||
/// Raises the PropertyChanged event if needed, and broadcasts a
|
||||
/// PropertyChangedMessage using the Messenger instance (or the
|
||||
/// static default instance if no Messenger instance is available).
|
||||
/// </summary>
|
||||
/// <param name="propertyName">The name of the property that
|
||||
/// changed.</param>
|
||||
/// <typeparam name="T">The type of the property that
|
||||
/// changed.</typeparam>
|
||||
/// <param name="propertyExpression">An expression identifying the property
|
||||
/// that changed.</param>
|
||||
/// <param name="oldValue">The property's value before the change
|
||||
/// occurred.</param>
|
||||
/// <param name="newValue">The property's value after the change
|
||||
/// occurred.</param>
|
||||
/// <param name="broadcast">If true, a PropertyChangedMessage will
|
||||
/// be broadcasted. If false, only the event will be raised.</param>
|
||||
[SuppressMessage("Microsoft.Design", "CA1030:UseEventsWhereAppropriate",
|
||||
Justification = "This cannot be an event")]
|
||||
protected virtual void RaisePropertyChanged(string propertyName)
|
||||
{
|
||||
VerifyPropertyName(propertyName);
|
||||
|
||||
var handler = PropertyChanged;
|
||||
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression)
|
||||
{
|
||||
if (propertyExpression == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var handler = PropertyChanged;
|
||||
|
||||
if (handler != null)
|
||||
{
|
||||
var body = propertyExpression.Body as MemberExpression;
|
||||
var expression = body.Expression as ConstantExpression;
|
||||
handler(expression.Value, new PropertyChangedEventArgs(body.Member.Name));
|
||||
}
|
||||
}
|
||||
|
||||
[SuppressMessage(
|
||||
"Microsoft.Design",
|
||||
"CA1006:GenericMethodsShouldProvideTypeParameter",
|
||||
Justification = "This syntax is more convenient than other alternatives.")]
|
||||
protected virtual void RaisePropertyChanged<T>(Expression<Func<T>> propertyExpression, T oldValue, T newValue, bool broadcast)
|
||||
{
|
||||
if (propertyExpression == null)
|
||||
|
@ -279,7 +221,7 @@ namespace GalaSoft.MvvmLight
|
|||
return;
|
||||
}
|
||||
|
||||
var handler = PropertyChanged;
|
||||
var handler = PropertyChangedHandler;
|
||||
|
||||
if (handler != null
|
||||
|| broadcast)
|
||||
|
@ -298,23 +240,5 @@ namespace GalaSoft.MvvmLight
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void RaisePropertyChanged()
|
||||
{
|
||||
var frames = new StackTrace();
|
||||
|
||||
for (var i = 0; i < frames.FrameCount; i++)
|
||||
{
|
||||
var frame = frames.GetFrame(i).GetMethod() as MethodInfo;
|
||||
if (frame != null)
|
||||
if (frame.IsSpecialName && frame.Name.StartsWith("set_", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
RaisePropertyChanged(frame.Name.Substring(4));
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
throw new InvalidOperationException("RaisePropertyChanged() can only by invoked within a property setter.");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -37,6 +37,7 @@
|
|||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>bin\Release\GalaSoft.MvvmLight.WPF4.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
|
@ -58,6 +59,9 @@
|
|||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\GalaSoft.MvvmLight %28NET35%29\NotifyPropertyChanged.cs">
|
||||
<Link>NotifyPropertyChanged.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight (NET35)\Command\RelayCommand.cs">
|
||||
<Link>Command\RelayCommand.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -20,4 +20,4 @@ using System.Runtime.InteropServices;
|
|||
using System.Security;
|
||||
|
||||
[assembly: Guid("4053e6aa-dac1-4b86-9478-443715f01d58")]
|
||||
[assembly: AllowPartiallyTrustedCallers]
|
||||
//[assembly: AllowPartiallyTrustedCallers]
|
|
@ -76,6 +76,7 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<DocumentationFile>Bin\Release\GalaSoft.MvvmLight.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Windows" />
|
||||
|
@ -87,6 +88,9 @@
|
|||
<Reference Include="System.Windows.Browser" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\GalaSoft.MvvmLight %28NET35%29\NotifyPropertyChanged.cs">
|
||||
<Link>NotifyPropertyChanged.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight %28NET35%29\Properties\AssemblyInfo.cs">
|
||||
<Link>Properties\AssemblyInfo.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>Bin\Release\GalaSoft.MvvmLight.SL4.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
|
@ -69,6 +70,9 @@
|
|||
<Reference Include="System.Windows.Browser" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\GalaSoft.MvvmLight %28NET35%29\NotifyPropertyChanged.cs">
|
||||
<Link>NotifyPropertyChanged.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight %28NET35%29\Properties\AssemblyInfo.cs">
|
||||
<Link>Properties\AssemblyInfo.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -5,6 +5,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GalaSoft.MvvmLight.Extras (
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GalaSoft.MvvmLight (WP7)", "GalaSoft.MvvmLight (WP7)\GalaSoft.MvvmLight (WP7).csproj", "{CD51F6FA-CD5B-4405-B5F1-B65CCAE8845B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GalaSoft.MvvmLight.Test (WP7)", "GalaSoft.MvvmLight.Test (WP7)\GalaSoft.MvvmLight.Test (WP7).csproj", "{594E864D-76B9-45B6-B2C6-AEE511673777}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
|
@ -19,6 +21,12 @@ Global
|
|||
{CD51F6FA-CD5B-4405-B5F1-B65CCAE8845B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CD51F6FA-CD5B-4405-B5F1-B65CCAE8845B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CD51F6FA-CD5B-4405-B5F1-B65CCAE8845B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>Bin\Release\GalaSoft.MvvmLight.WP7.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="mscorlib" />
|
||||
|
@ -51,6 +52,9 @@
|
|||
<Reference Include="System.Net" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\GalaSoft.MvvmLight %28NET35%29\NotifyPropertyChanged.cs">
|
||||
<Link>NotifyPropertyChanged.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight %28NET35%29\Properties\AssemblyInfo.cs">
|
||||
<Link>Properties\AssemblyInfo.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -197,7 +197,7 @@ namespace GalaSoft.MvvmLight.Command
|
|||
}
|
||||
|
||||
/// <summary>
|
||||
/// Called when this trigger is attached to a FrameworkElement.
|
||||
/// Called when this trigger is attached to a DependencyObject.
|
||||
/// </summary>
|
||||
protected override void OnAttached()
|
||||
{
|
||||
|
@ -209,11 +209,11 @@ namespace GalaSoft.MvvmLight.Command
|
|||
/// This method is here for compatibility
|
||||
/// with the Silverlight version.
|
||||
/// </summary>
|
||||
/// <returns>The FrameworkElement to which this trigger
|
||||
/// is attached.</returns>
|
||||
/// <returns>The object to which this trigger
|
||||
/// is attached casted as a FrameworkElement.</returns>
|
||||
private FrameworkElement GetAssociatedObject()
|
||||
{
|
||||
return AssociatedObject;
|
||||
return AssociatedObject as FrameworkElement;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
|
|
@ -38,7 +38,7 @@ namespace GalaSoft.MvvmLight.Command
|
|||
//// Description = "A Trigger used to bind any event to an ICommand.",
|
||||
//// UrlContacts = "http://www.galasoft.ch/contact_en.html",
|
||||
//// Email = "laurent@galasoft.ch")]
|
||||
public partial class EventToCommand : TriggerAction<FrameworkElement>
|
||||
public partial class EventToCommand : TriggerAction<DependencyObject>
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets or sets a value indicating whether the EventArgs passed to the
|
||||
|
@ -119,9 +119,9 @@ namespace GalaSoft.MvvmLight.Command
|
|||
private bool AssociatedElementIsDisabled()
|
||||
{
|
||||
var element = GetAssociatedObject();
|
||||
|
||||
return element != null
|
||||
&& !element.IsEnabled;
|
||||
return AssociatedObject == null
|
||||
|| (element != null
|
||||
&& !element.IsEnabled);
|
||||
}
|
||||
|
||||
private void EnableDisableElement()
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<DocumentationFile>bin\Release\GalaSoft.MvvmLight.Extras.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="PresentationCore">
|
||||
|
@ -73,7 +74,7 @@
|
|||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Windows.Interactivity, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
|
||||
<Reference Include="System.Windows.Interactivity">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\External\NET35\System.Windows.Interactivity.dll</HintPath>
|
||||
</Reference>
|
||||
|
|
|
@ -18,4 +18,4 @@ using System.Runtime.InteropServices;
|
|||
using System.Security;
|
||||
|
||||
[assembly: Guid("6ff199ef-d7c4-4e8c-919e-5813e9b8b504")]
|
||||
[assembly: AllowPartiallyTrustedCallers]
|
||||
//[assembly: AllowPartiallyTrustedCallers]
|
|
@ -11,7 +11,7 @@
|
|||
// <license>
|
||||
// See license.txt in this project or http://www.galasoft.ch/license_MIT.txt
|
||||
// </license>
|
||||
// <LastBaseLevel>alpha1/BL0014</LastBaseLevel>
|
||||
// <LastBaseLevel>alpha1/BL0015</LastBaseLevel>
|
||||
// ****************************************************************************
|
||||
|
||||
using System;
|
||||
|
@ -32,7 +32,7 @@ using System.Runtime.InteropServices;
|
|||
[assembly: CLSCompliant(true)]
|
||||
|
||||
////[assembly: AssemblyVersion("4.0.0.*")]
|
||||
[assembly: AssemblyFileVersion("4.0.0.0/BL0014")]
|
||||
[assembly: AssemblyFileVersion("4.0.0.0/BL0015")]
|
||||
|
||||
// FxCop
|
||||
[module: SuppressMessage("Microsoft.Naming",
|
||||
|
|
|
@ -42,7 +42,7 @@ namespace GalaSoft.MvvmLight.Command
|
|||
//// Description = "A Trigger used to bind any event to an ICommand.",
|
||||
//// UrlContacts = "http://www.galasoft.ch/contact_en.html",
|
||||
//// Email = "laurent@galasoft.ch")]
|
||||
public class EventToCommand : TriggerAction<FrameworkElement>
|
||||
public class EventToCommand : TriggerAction<DependencyObject>
|
||||
{
|
||||
/// <summary>
|
||||
/// Identifies the <see cref="CommandParameter" /> dependency property
|
||||
|
@ -231,13 +231,13 @@ namespace GalaSoft.MvvmLight.Command
|
|||
/// is attached.</returns>
|
||||
private FrameworkElement GetAssociatedObject()
|
||||
{
|
||||
return AssociatedObject;
|
||||
return AssociatedObject as FrameworkElement;
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// This method is here for compatibility
|
||||
/// with the Silverlight version.
|
||||
/// with the Silverlight 3 version.
|
||||
/// </summary>
|
||||
/// <returns>The command that must be executed when
|
||||
/// this trigger is invoked.</returns>
|
||||
|
@ -246,6 +246,12 @@ namespace GalaSoft.MvvmLight.Command
|
|||
return Command;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Specifies whether the EventArgs of the event that triggered this
|
||||
/// action should be passed to the bound RelayCommand. If this is true,
|
||||
/// the command should accept arguments of the corresponding
|
||||
/// type (for example RelayCommand<MouseButtonEventArgs>).
|
||||
/// </summary>
|
||||
public bool PassEventArgsToCommand
|
||||
{
|
||||
get;
|
||||
|
@ -318,8 +324,9 @@ namespace GalaSoft.MvvmLight.Command
|
|||
{
|
||||
var element = GetAssociatedObject();
|
||||
|
||||
return element != null
|
||||
&& !element.IsEnabled;
|
||||
return AssociatedObject == null
|
||||
|| (element != null
|
||||
&& !element.IsEnabled);
|
||||
}
|
||||
|
||||
private void EnableDisableElement()
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>bin\Release\GalaSoft.MvvmLight.Extras.WPF4.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
|
|
|
@ -18,4 +18,4 @@ using System.Runtime.InteropServices;
|
|||
using System.Security;
|
||||
|
||||
[assembly: Guid("c5f19cda-fe5e-4c84-8f36-1afe15e399b1")]
|
||||
[assembly: AllowPartiallyTrustedCallers]
|
||||
//[assembly: AllowPartiallyTrustedCallers]
|
|
@ -73,6 +73,7 @@
|
|||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
|
||||
<DocumentationFile>Bin\Release\GalaSoft.MvvmLight.Extras.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System.Windows" />
|
||||
|
@ -124,9 +125,7 @@
|
|||
<Link>License.txt</Link>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WCFMetadata Include="Service References\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Silverlight\$(SilverlightVersion)\Microsoft.Silverlight.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.
|
||||
|
|
|
@ -35,10 +35,13 @@ namespace Expression.Samples.Interactivity.DataHelpers
|
|||
|
||||
private DependencyPropertyListener listener;
|
||||
|
||||
private FrameworkElement target;
|
||||
private DependencyObject target;
|
||||
|
||||
private object value;
|
||||
|
||||
/// <summary>
|
||||
/// The context of the binding.
|
||||
/// </summary>
|
||||
public object Context
|
||||
{
|
||||
get;
|
||||
|
@ -48,6 +51,7 @@ namespace Expression.Samples.Interactivity.DataHelpers
|
|||
/// <summary>
|
||||
/// Constructor.
|
||||
/// </summary>
|
||||
/// <param name="context">The context of the binding.</param>
|
||||
/// <param name="changedHandler">Callback whenever the value of this binding has changed.</param>
|
||||
public BindingListener(object context, ChangedHandler changedHandler)
|
||||
{
|
||||
|
@ -81,7 +85,7 @@ namespace Expression.Samples.Interactivity.DataHelpers
|
|||
/// <summary>
|
||||
/// The element to be used as the context on which to evaluate the binding.
|
||||
/// </summary>
|
||||
public FrameworkElement Element
|
||||
public DependencyObject Element
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@ -179,7 +183,7 @@ namespace Expression.Samples.Interactivity.DataHelpers
|
|||
|
||||
private static int index;
|
||||
|
||||
private FrameworkElement target;
|
||||
private DependencyObject target;
|
||||
|
||||
public DependencyPropertyListener()
|
||||
{
|
||||
|
@ -191,7 +195,7 @@ namespace Expression.Samples.Interactivity.DataHelpers
|
|||
|
||||
public event EventHandler<BindingChangedEventArgs> Changed;
|
||||
|
||||
public void Attach(FrameworkElement element, Binding binding)
|
||||
public void Attach(DependencyObject element, Binding binding)
|
||||
{
|
||||
if (this.target != null)
|
||||
{
|
||||
|
@ -200,7 +204,7 @@ namespace Expression.Samples.Interactivity.DataHelpers
|
|||
|
||||
this.target = element;
|
||||
|
||||
this.target.SetBinding(this.property, binding);
|
||||
BindingOperations.SetBinding(target, this.property, binding);
|
||||
}
|
||||
|
||||
public void Detach()
|
||||
|
|
|
@ -52,6 +52,7 @@
|
|||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>Bin\Release\GalaSoft.MvvmLight.Extras.SL4.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<SignAssembly>true</SignAssembly>
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
<NoConfig>true</NoConfig>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<DocumentationFile>Bin\Release\GalaSoft.MvvmLight.Extras.WP7.XML</DocumentationFile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="mscorlib" />
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
using System.Windows.Controls;
|
||||
using System.Windows.Data;
|
||||
using System.Windows.Interactivity;
|
||||
using System.Windows.Media.Animation;
|
||||
using System.Windows.Shapes;
|
||||
using GalaSoft.MvvmLight.Command;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<ProjectGuid>{D08856FE-520C-48D8-9C2F-69B9CFDB92BE}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>GalaSoft.MvvmLight.Test__NET35_</RootNamespace>
|
||||
<RootNamespace>GalaSoft.MvvmLight.Test</RootNamespace>
|
||||
<AssemblyName>GalaSoft.MvvmLight.Test %28NET35%29</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
|
@ -69,8 +69,11 @@
|
|||
<Compile Include="Messaging\NotificationMessageActionTest.cs" />
|
||||
<Compile Include="Messaging\NotificationMessageTest.cs" />
|
||||
<Compile Include="Messaging\PropertyChangedMessageTest.cs" />
|
||||
<Compile Include="NotifyPropertyChangedTest.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Threading\TestDispatcherHelper.cs" />
|
||||
|
||||
<Compile Include="ViewModel\TestClassWithNotifyPropertyChanged.cs" />
|
||||
<Compile Include="Threading\DispatcherHelperTest.cs" />
|
||||
<Compile Include="ViewModelBaseTest.cs" />
|
||||
<Compile Include="ViewModel\TestViewModel.cs" />
|
||||
<Compile Include="ViewModel\TestViewModelInlinePropertyChanged.cs" />
|
||||
|
@ -87,6 +90,7 @@
|
|||
<Name>GalaSoft.MvvmLight.Extras %28NET35%29</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildBinPath)\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.
|
||||
|
|
|
@ -0,0 +1,115 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using GalaSoft.MvvmLight.Test.Stubs;
|
||||
using GalaSoft.MvvmLight.Test.ViewModel;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace GalaSoft.MvvmLight.Test
|
||||
{
|
||||
[TestClass]
|
||||
public class NotifyPropertyChangedTest
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestPropertyChangeNoBroadcast()
|
||||
{
|
||||
var receivedDateTimeLocal = DateTime.MinValue;
|
||||
|
||||
var vm = new TestClassWithNotifyPropertyChanged();
|
||||
vm.PropertyChanged += (s, e) =>
|
||||
{
|
||||
if (e.PropertyName == TestClassWithNotifyPropertyChanged.LastChangedPropertyName)
|
||||
{
|
||||
receivedDateTimeLocal = vm.LastChanged;
|
||||
}
|
||||
};
|
||||
|
||||
var now = DateTime.Now;
|
||||
vm.LastChanged = now;
|
||||
Assert.AreEqual(now, vm.LastChanged);
|
||||
Assert.AreEqual(now, receivedDateTimeLocal);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestPropertyChangeNoMagicString()
|
||||
{
|
||||
var receivedDateTimeLocal = DateTime.MinValue;
|
||||
|
||||
var vm = new TestClassWithNotifyPropertyChanged();
|
||||
vm.PropertyChanged += (s, e) =>
|
||||
{
|
||||
if (e.PropertyName == "LastChangedNoMagicString")
|
||||
{
|
||||
receivedDateTimeLocal = vm.LastChangedNoMagicString;
|
||||
}
|
||||
};
|
||||
|
||||
var now = DateTime.Now;
|
||||
vm.LastChangedNoMagicString = now;
|
||||
Assert.AreEqual(now, vm.LastChangedNoMagicString);
|
||||
Assert.AreEqual(now, receivedDateTimeLocal);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestPropertyChangedSendInline()
|
||||
{
|
||||
var receivedDateTimeLocal = DateTime.MinValue;
|
||||
|
||||
var vm = new TestClassWithNotifyPropertyChanged();
|
||||
vm.PropertyChanged += (s, e) =>
|
||||
{
|
||||
if (e.PropertyName == "LastChangedInline")
|
||||
{
|
||||
receivedDateTimeLocal = vm.LastChangedInline;
|
||||
}
|
||||
};
|
||||
|
||||
var now = DateTime.Now;
|
||||
vm.LastChangedInline = now;
|
||||
|
||||
Assert.AreEqual(now, vm.LastChangedInline);
|
||||
Assert.AreEqual(now, receivedDateTimeLocal);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
[ExpectedException(typeof(InvalidOperationException))]
|
||||
public void TestPropertyChangedSendInlineOutOfSetter()
|
||||
{
|
||||
var vm = new TestClassWithNotifyPropertyChanged();
|
||||
vm.RaisePropertyChangedInlineOutOfPropertySetter();
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
#if DEBUG
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
#endif
|
||||
public void TestRaiseValidInvalidPropertyName()
|
||||
{
|
||||
var vm = new TestClassWithNotifyPropertyChanged();
|
||||
|
||||
var receivedPropertyChanged = false;
|
||||
var invalidPropertyNameReceived = false;
|
||||
vm.PropertyChanged += (s, e) =>
|
||||
{
|
||||
if (e.PropertyName == TestClassWithNotifyPropertyChanged.LastChangedPropertyName)
|
||||
{
|
||||
receivedPropertyChanged = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
invalidPropertyNameReceived = true;
|
||||
}
|
||||
};
|
||||
|
||||
vm.RaisePropertyChangedPublic(TestClassWithNotifyPropertyChanged.LastChangedPropertyName);
|
||||
|
||||
Assert.IsTrue(receivedPropertyChanged);
|
||||
Assert.IsFalse(invalidPropertyNameReceived);
|
||||
|
||||
vm.RaisePropertyChangedPublic(TestClassWithNotifyPropertyChanged.LastChangedPropertyName + "1");
|
||||
|
||||
Assert.IsTrue(invalidPropertyNameReceived);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,97 @@
|
|||
using System;
|
||||
|
||||
namespace GalaSoft.MvvmLight.Test.Stubs
|
||||
{
|
||||
public class TestClassWithNotifyPropertyChanged : NotifyPropertyChanged
|
||||
{
|
||||
/// <summary>
|
||||
/// The <see cref="LastChanged" /> property's name.
|
||||
/// </summary>
|
||||
public const string LastChangedPropertyName = "LastChanged";
|
||||
|
||||
private DateTime _lastChanged = DateTime.MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the LastChanged property.
|
||||
/// Changes to that property's value raise the PropertyChanged event.
|
||||
/// </summary>
|
||||
public DateTime LastChanged
|
||||
{
|
||||
get
|
||||
{
|
||||
return _lastChanged;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (_lastChanged == value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_lastChanged = value;
|
||||
RaisePropertyChanged(LastChangedPropertyName);
|
||||
}
|
||||
}
|
||||
|
||||
private DateTime _lastChangedNoMagicString = DateTime.MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the LastChangedNoMagicString property.
|
||||
/// Changes to that property's value raise the PropertyChanged event.
|
||||
/// </summary>
|
||||
public DateTime LastChangedNoMagicString
|
||||
{
|
||||
get
|
||||
{
|
||||
return _lastChangedNoMagicString;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (_lastChangedNoMagicString == value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_lastChangedNoMagicString = value;
|
||||
RaisePropertyChanged(() => LastChangedNoMagicString);
|
||||
}
|
||||
}
|
||||
|
||||
private DateTime _lastChangedInline = DateTime.MinValue;
|
||||
|
||||
/// <summary>
|
||||
/// Gets the LastChangedInline property.
|
||||
/// Changes to that property's value raise the PropertyChanged event.
|
||||
/// </summary>
|
||||
public DateTime LastChangedInline
|
||||
{
|
||||
get
|
||||
{
|
||||
return _lastChangedInline;
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (_lastChangedInline == value)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
_lastChangedInline = value;
|
||||
RaisePropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public void RaisePropertyChangedInlineOutOfPropertySetter()
|
||||
{
|
||||
RaisePropertyChanged();
|
||||
}
|
||||
|
||||
public void RaisePropertyChangedPublic(string propertyName)
|
||||
{
|
||||
RaisePropertyChanged(propertyName);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -7,34 +7,9 @@ using GalaSoft.MvvmLight.Helpers;
|
|||
|
||||
namespace GalaSoft.MvvmLight.Test
|
||||
{
|
||||
/// <summary>
|
||||
/// Summary description for ViewModelBaseTest
|
||||
/// </summary>
|
||||
[TestClass]
|
||||
public class ViewModelBaseTest
|
||||
{
|
||||
[TestMethod]
|
||||
public void TestDispose()
|
||||
{
|
||||
Messenger.Reset();
|
||||
|
||||
var vm = new TestViewModel();
|
||||
Messenger.Default.Register<string>(vm, vm.HandleStringMessage);
|
||||
|
||||
const string Content1 = "Hello world";
|
||||
const string Content2 = "Another message";
|
||||
|
||||
Messenger.Default.Send(Content1);
|
||||
|
||||
Assert.AreEqual(Content1, vm.ReceivedContent);
|
||||
|
||||
vm.Dispose();
|
||||
|
||||
Messenger.Default.Send(Content2);
|
||||
|
||||
Assert.AreEqual(Content1, vm.ReceivedContent);
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void TestCleanup()
|
||||
{
|
||||
|
|
|
@ -101,12 +101,18 @@
|
|||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Messaging\PropertyChangedMessageTest.cs">
|
||||
<Link>Messaging\PropertyChangedMessageTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Threading\TestDispatcherHelper.cs">
|
||||
<Link>Threading\TestDispatcherHelper.cs</Link>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\NotifyPropertyChangedTest.cs">
|
||||
<Link>NotifyPropertyChangedTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Threading\DispatcherHelperTest.cs">
|
||||
<Link>Threading\DispatcherHelperTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModelBaseTest.cs">
|
||||
<Link>ViewModelBaseTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModel\TestClassWithNotifyPropertyChanged.cs">
|
||||
<Link>ViewModel\TestClassWithNotifyPropertyChanged.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModel\TestViewModel.cs">
|
||||
<Link>ViewModel\TestViewModel.cs</Link>
|
||||
</Compile>
|
||||
|
@ -134,6 +140,7 @@
|
|||
<ItemGroup>
|
||||
<WCFMetadata Include="Service References\" />
|
||||
</ItemGroup>
|
||||
<ItemGroup />
|
||||
<Import Project="$(MSBuildBinPath)\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.
|
||||
|
|
|
@ -99,9 +99,18 @@
|
|||
<Reference Include="System.Windows.Browser" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\NotifyPropertyChangedTest.cs">
|
||||
<Link>NotifyPropertyChangedTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Properties\AssemblyInfo.cs">
|
||||
<Link>Properties\AssemblyInfo.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Threading\DispatcherHelperTest.cs">
|
||||
<Link>Threading\DispatcherHelperTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModel\TestClassWithNotifyPropertyChanged.cs">
|
||||
<Link>ViewModels\TestClassWithNotifyPropertyChanged.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModel\TestViewModel.cs">
|
||||
<Link>ViewModels\TestViewModel.cs</Link>
|
||||
</Compile>
|
||||
|
@ -159,9 +168,6 @@
|
|||
<Compile Include="..\GalaSoft.MvvmLight.Test (NET35)\Messaging\PropertyChangedMessageTest.cs">
|
||||
<Link>Messaging\PropertyChangedMessageTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test (NET35)\Threading\TestDispatcherHelper.cs">
|
||||
<Link>Threading\TestDispatcherHelper.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test (NET35)\ViewModelBaseTest.cs">
|
||||
<Link>ViewModelBaseTest.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -137,15 +137,22 @@
|
|||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Messaging\PropertyChangedMessageTest.cs">
|
||||
<Link>Messaging\PropertyChangedMessageTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\NotifyPropertyChangedTest.cs">
|
||||
<Link>NotifyPropertyChangedTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Properties\AssemblyInfo.cs">
|
||||
<Link>Properties\AssemblyInfo.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Threading\TestDispatcherHelper.cs">
|
||||
<Link>Threading\TestDispatcherHelper.cs</Link>
|
||||
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Threading\DispatcherHelperTest.cs">
|
||||
<Link>Threading\DispatcherHelperTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModelBaseTest.cs">
|
||||
<Link>ViewModelBaseTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModel\TestClassWithNotifyPropertyChanged.cs">
|
||||
<Link>ViewModels\TestClassWithNotifyPropertyChanged.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModel\TestViewModel.cs">
|
||||
<Link>ViewModels\TestViewModel.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -112,12 +112,18 @@
|
|||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Messaging\PropertyChangedMessageTest.cs">
|
||||
<Link>Messaging\PropertyChangedMessageTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Threading\TestDispatcherHelper.cs">
|
||||
<Link>Threading\TestDispatcherHelper.cs</Link>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\NotifyPropertyChangedTest.cs">
|
||||
<Link>NotifyPropertyChangedTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\Threading\DispatcherHelperTest.cs">
|
||||
<Link>Threading\DispatcherHelperTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModelBaseTest.cs">
|
||||
<Link>ViewModelBaseTest.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModel\TestClassWithNotifyPropertyChanged.cs">
|
||||
<Link>ViewModel\TestClassWithNotifyPropertyChanged.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="..\GalaSoft.MvvmLight.Test %28NET35%29\ViewModel\TestViewModel.cs">
|
||||
<Link>ViewModel\TestViewModel.cs</Link>
|
||||
</Compile>
|
||||
|
|
|
@ -72,8 +72,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "SL4", "SL4", "{E3327395-6DB
|
|||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GalaSoft.MvvmLight.Test (SL4)", "GalaSoft.MvvmLight.Test (SL4)\GalaSoft.MvvmLight.Test (SL4).csproj", "{540219BD-EBEA-4956-AAF7-CA1A87B1D177}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GalaSoft.MvvmLight.Test (WP7)", "GalaSoft.MvvmLight.Test (WP7)\GalaSoft.MvvmLight.Test (WP7).csproj", "{594E864D-76B9-45B6-B2C6-AEE511673777}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(TestCaseManagementSettings) = postSolution
|
||||
CategoryFile = GalaSoft.MvvmLight1.vsmdi
|
||||
|
@ -131,12 +129,6 @@ Global
|
|||
{540219BD-EBEA-4956-AAF7-CA1A87B1D177}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{540219BD-EBEA-4956-AAF7-CA1A87B1D177}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{540219BD-EBEA-4956-AAF7-CA1A87B1D177}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{594E864D-76B9-45B6-B2C6-AEE511673777}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
|
|
@ -0,0 +1,98 @@
|
|||
rem @echo off
|
||||
echo Installing MVVM Light binaries
|
||||
|
||||
if exist _Binaries rd /s /q _Binaries
|
||||
|
||||
md _Binaries
|
||||
md _Binaries\Debug
|
||||
md _Binaries\Debug\Silverlight3
|
||||
md _Binaries\Debug\Silverlight4
|
||||
md _Binaries\Debug\WP7
|
||||
md _Binaries\Debug\WPF4
|
||||
md _Binaries\Debug\WPF35SP1
|
||||
md _Binaries\Release
|
||||
md _Binaries\Release\Silverlight3
|
||||
md _Binaries\Release\Silverlight4
|
||||
md _Binaries\Release\WP7
|
||||
md _Binaries\Release\WPF4
|
||||
md _Binaries\Release\WPF35SP1
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight (NET4)\bin\Debug\GalaSoft.MvvmLight.WPF4.dll" copy ".\GalaSoft.MvvmLight (NET4)\bin\Debug\GalaSoft.MvvmLight.WPF4.dll" .\_Binaries\Debug\WPF4\GalaSoft.MvvmLight.WPF4.dll
|
||||
if exist ".\GalaSoft.MvvmLight (NET4)\bin\Debug\GalaSoft.MvvmLight.WPF4.pdb" copy ".\GalaSoft.MvvmLight (NET4)\bin\Debug\GalaSoft.MvvmLight.WPF4.pdb" .\_Binaries\Debug\WPF4\GalaSoft.MvvmLight.WPF4.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (NET4)\bin\Debug\GalaSoft.MvvmLight.WPF4.xml" copy ".\GalaSoft.MvvmLight (NET4)\bin\Debug\GalaSoft.MvvmLight.WPF4.xml" .\_Binaries\Debug\WPF4\GalaSoft.MvvmLight.WPF4.xml
|
||||
if exist ".\GalaSoft.MvvmLight (NET4)\bin\Release\GalaSoft.MvvmLight.WPF4.dll" copy ".\GalaSoft.MvvmLight (NET4)\bin\Release\GalaSoft.MvvmLight.WPF4.dll" .\_Binaries\Release\WPF4\GalaSoft.MvvmLight.WPF4.dll
|
||||
if exist ".\GalaSoft.MvvmLight (NET4)\bin\Release\GalaSoft.MvvmLight.WPF4.pdb" copy ".\GalaSoft.MvvmLight (NET4)\bin\Release\GalaSoft.MvvmLight.WPF4.pdb" .\_Binaries\Release\WPF4\GalaSoft.MvvmLight.WPF4.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (NET4)\bin\Release\GalaSoft.MvvmLight.WPF4.xml" copy ".\GalaSoft.MvvmLight (NET4)\bin\Release\GalaSoft.MvvmLight.WPF4.xml" .\_Binaries\Release\WPF4\GalaSoft.MvvmLight.WPF4.xml
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight (NET35)\bin\Debug\GalaSoft.MvvmLight.dll" copy ".\GalaSoft.MvvmLight (NET35)\bin\Debug\GalaSoft.MvvmLight.dll" .\_Binaries\Debug\WPF35SP1\GalaSoft.MvvmLight.dll
|
||||
if exist ".\GalaSoft.MvvmLight (NET35)\bin\Debug\GalaSoft.MvvmLight.pdb" copy ".\GalaSoft.MvvmLight (NET35)\bin\Debug\GalaSoft.MvvmLight.pdb" .\_Binaries\Debug\WPF35SP1\GalaSoft.MvvmLight.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (NET35)\bin\Debug\GalaSoft.MvvmLight.xml" copy ".\GalaSoft.MvvmLight (NET35)\bin\Debug\GalaSoft.MvvmLight.xml" .\_Binaries\Debug\WPF35SP1\GalaSoft.MvvmLight.xml
|
||||
if exist ".\GalaSoft.MvvmLight (NET35)\bin\Release\GalaSoft.MvvmLight.dll" copy ".\GalaSoft.MvvmLight (NET35)\bin\Release\GalaSoft.MvvmLight.dll" .\_Binaries\Release\WPF35SP1\GalaSoft.MvvmLight.dll
|
||||
if exist ".\GalaSoft.MvvmLight (NET35)\bin\Release\GalaSoft.MvvmLight.pdb" copy ".\GalaSoft.MvvmLight (NET35)\bin\Release\GalaSoft.MvvmLight.pdb" .\_Binaries\Release\WPF35SP1\GalaSoft.MvvmLight.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (NET35)\bin\Release\GalaSoft.MvvmLight.xml" copy ".\GalaSoft.MvvmLight (NET35)\bin\Release\GalaSoft.MvvmLight.xml" .\_Binaries\Release\WPF35SP1\GalaSoft.MvvmLight.xml
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight (SL3)\bin\Debug\GalaSoft.MvvmLight.dll" copy ".\GalaSoft.MvvmLight (SL3)\bin\Debug\GalaSoft.MvvmLight.dll" .\_Binaries\Debug\Silverlight3\GalaSoft.MvvmLight.dll
|
||||
if exist ".\GalaSoft.MvvmLight (SL3)\bin\Debug\GalaSoft.MvvmLight.pdb" copy ".\GalaSoft.MvvmLight (SL3)\bin\Debug\GalaSoft.MvvmLight.pdb" .\_Binaries\Debug\Silverlight3\GalaSoft.MvvmLight.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (SL3)\bin\Debug\GalaSoft.MvvmLight.xml" copy ".\GalaSoft.MvvmLight (SL3)\bin\Debug\GalaSoft.MvvmLight.xml" .\_Binaries\Debug\Silverlight3\GalaSoft.MvvmLight.xml
|
||||
if exist ".\GalaSoft.MvvmLight (SL3)\bin\Release\GalaSoft.MvvmLight.dll" copy ".\GalaSoft.MvvmLight (SL3)\bin\Release\GalaSoft.MvvmLight.dll" .\_Binaries\Release\Silverlight3\GalaSoft.MvvmLight.dll
|
||||
if exist ".\GalaSoft.MvvmLight (SL3)\bin\Release\GalaSoft.MvvmLight.pdb" copy ".\GalaSoft.MvvmLight (SL3)\bin\Release\GalaSoft.MvvmLight.pdb" .\_Binaries\Release\Silverlight3\GalaSoft.MvvmLight.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (SL3)\bin\Release\GalaSoft.MvvmLight.xml" copy ".\GalaSoft.MvvmLight (SL3)\bin\Release\GalaSoft.MvvmLight.xml" .\_Binaries\Release\Silverlight3\GalaSoft.MvvmLight.xml
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight (SL4)\bin\Debug\GalaSoft.MvvmLight.SL4.dll" copy ".\GalaSoft.MvvmLight (SL4)\bin\Debug\GalaSoft.MvvmLight.SL4.dll" .\_Binaries\Debug\Silverlight4\GalaSoft.MvvmLight.SL4.dll
|
||||
if exist ".\GalaSoft.MvvmLight (SL4)\bin\Debug\GalaSoft.MvvmLight.SL4.pdb" copy ".\GalaSoft.MvvmLight (SL4)\bin\Debug\GalaSoft.MvvmLight.SL4.pdb" .\_Binaries\Debug\Silverlight4\GalaSoft.MvvmLight.SL4.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (SL4)\bin\Debug\GalaSoft.MvvmLight.SL4.xml" copy ".\GalaSoft.MvvmLight (SL4)\bin\Debug\GalaSoft.MvvmLight.SL4.xml" .\_Binaries\Debug\Silverlight4\GalaSoft.MvvmLight.SL4.xml
|
||||
if exist ".\GalaSoft.MvvmLight (SL4)\bin\Release\GalaSoft.MvvmLight.SL4.dll" copy ".\GalaSoft.MvvmLight (SL4)\bin\Release\GalaSoft.MvvmLight.SL4.dll" .\_Binaries\Release\Silverlight4\GalaSoft.MvvmLight.SL4.dll
|
||||
if exist ".\GalaSoft.MvvmLight (SL4)\bin\Release\GalaSoft.MvvmLight.SL4.pdb" copy ".\GalaSoft.MvvmLight (SL4)\bin\Release\GalaSoft.MvvmLight.SL4.pdb" .\_Binaries\Release\Silverlight4\GalaSoft.MvvmLight.SL4.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (SL4)\bin\Release\GalaSoft.MvvmLight.SL4.xml" copy ".\GalaSoft.MvvmLight (SL4)\bin\Release\GalaSoft.MvvmLight.SL4.xml" .\_Binaries\Release\Silverlight4\GalaSoft.MvvmLight.SL4.xml
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight (WP7)\bin\Debug\GalaSoft.MvvmLight.WP7.dll" copy ".\GalaSoft.MvvmLight (WP7)\bin\Debug\GalaSoft.MvvmLight.WP7.dll" .\_Binaries\Debug\WP7\GalaSoft.MvvmLight.WP7.dll
|
||||
if exist ".\GalaSoft.MvvmLight (WP7)\bin\Debug\GalaSoft.MvvmLight.WP7.pdb" copy ".\GalaSoft.MvvmLight (WP7)\bin\Debug\GalaSoft.MvvmLight.WP7.pdb" .\_Binaries\Debug\WP7\GalaSoft.MvvmLight.WP7.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (WP7)\bin\Debug\GalaSoft.MvvmLight.WP7.xml" copy ".\GalaSoft.MvvmLight (WP7)\bin\Debug\GalaSoft.MvvmLight.WP7.xml" .\_Binaries\Debug\WP7\GalaSoft.MvvmLight.WP7.xml
|
||||
if exist ".\GalaSoft.MvvmLight (WP7)\bin\Release\GalaSoft.MvvmLight.WP7.dll" copy ".\GalaSoft.MvvmLight (WP7)\bin\Release\GalaSoft.MvvmLight.WP7.dll" .\_Binaries\Release\WP7\GalaSoft.MvvmLight.WP7.dll
|
||||
if exist ".\GalaSoft.MvvmLight (WP7)\bin\Release\GalaSoft.MvvmLight.WP7.pdb" copy ".\GalaSoft.MvvmLight (WP7)\bin\Release\GalaSoft.MvvmLight.WP7.pdb" .\_Binaries\Release\WP7\GalaSoft.MvvmLight.WP7.pdb
|
||||
if exist ".\GalaSoft.MvvmLight (WP7)\bin\Release\GalaSoft.MvvmLight.WP7.xml" copy ".\GalaSoft.MvvmLight (WP7)\bin\Release\GalaSoft.MvvmLight.WP7.xml" .\_Binaries\Release\WP7\GalaSoft.MvvmLight.WP7.xml
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Debug\GalaSoft.MvvmLight.Extras.WPF4.dll" copy ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Debug\GalaSoft.MvvmLight.Extras.WPF4.dll" .\_Binaries\Debug\WPF4\GalaSoft.MvvmLight.Extras.WPF4.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Debug\GalaSoft.MvvmLight.Extras.WPF4.pdb" copy ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Debug\GalaSoft.MvvmLight.Extras.WPF4.pdb" .\_Binaries\Debug\WPF4\GalaSoft.MvvmLight.Extras.WPF4.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Debug\GalaSoft.MvvmLight.Extras.WPF4.xml" copy ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Debug\GalaSoft.MvvmLight.Extras.WPF4.xml" .\_Binaries\Debug\WPF4\GalaSoft.MvvmLight.Extras.WPF4.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Debug\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Debug\System.Windows.Interactivity.dll" .\_Binaries\Debug\WPF4\System.Windows.Interactivity.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Release\GalaSoft.MvvmLight.Extras.WPF4.dll" copy ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Release\GalaSoft.MvvmLight.Extras.WPF4.dll" .\_Binaries\Release\WPF4\GalaSoft.MvvmLight.Extras.WPF4.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Release\GalaSoft.MvvmLight.Extras.WPF4.pdb" copy ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Release\GalaSoft.MvvmLight.Extras.WPF4.pdb" .\_Binaries\Release\WPF4\GalaSoft.MvvmLight.Extras.WPF4.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Release\GalaSoft.MvvmLight.Extras.WPF4.xml" copy ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Release\GalaSoft.MvvmLight.Extras.WPF4.xml" .\_Binaries\Release\WPF4\GalaSoft.MvvmLight.Extras.WPF4.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Release\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (NET4)\bin\Release\System.Windows.Interactivity.dll" .\_Binaries\Release\WPF4\System.Windows.Interactivity.dll
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Debug\GalaSoft.MvvmLight.Extras.dll" copy ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Debug\GalaSoft.MvvmLight.Extras.dll" .\_Binaries\Debug\WPF35SP1\GalaSoft.MvvmLight.Extras.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Debug\GalaSoft.MvvmLight.Extras.pdb" copy ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Debug\GalaSoft.MvvmLight.Extras.pdb" .\_Binaries\Debug\WPF35SP1\GalaSoft.MvvmLight.Extras.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Debug\GalaSoft.MvvmLight.Extras.xml" copy ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Debug\GalaSoft.MvvmLight.Extras.xml" .\_Binaries\Debug\WPF35SP1\GalaSoft.MvvmLight.Extras.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Debug\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Debug\System.Windows.Interactivity.dll" .\_Binaries\Debug\WPF35SP1\System.Windows.Interactivity.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Release\GalaSoft.MvvmLight.Extras.dll" copy ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Release\GalaSoft.MvvmLight.Extras.dll" .\_Binaries\Release\WPF35SP1\GalaSoft.MvvmLight.Extras.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Release\GalaSoft.MvvmLight.Extras.pdb" copy ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Release\GalaSoft.MvvmLight.Extras.pdb" .\_Binaries\Release\WPF35SP1\GalaSoft.MvvmLight.Extras.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Release\GalaSoft.MvvmLight.Extras.xml" copy ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Release\GalaSoft.MvvmLight.Extras.xml" .\_Binaries\Release\WPF35SP1\GalaSoft.MvvmLight.Extras.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Release\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (NET35)\bin\Release\System.Windows.Interactivity.dll" .\_Binaries\Release\WPF35SP1\System.Windows.Interactivity.dll
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Debug\GalaSoft.MvvmLight.Extras.dll" copy ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Debug\GalaSoft.MvvmLight.Extras.dll" .\_Binaries\Debug\Silverlight3\GalaSoft.MvvmLight.Extras.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Debug\GalaSoft.MvvmLight.Extras.pdb" copy ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Debug\GalaSoft.MvvmLight.Extras.pdb" .\_Binaries\Debug\Silverlight3\GalaSoft.MvvmLight.Extras.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Debug\GalaSoft.MvvmLight.Extras.xml" copy ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Debug\GalaSoft.MvvmLight.Extras.xml" .\_Binaries\Debug\Silverlight3\GalaSoft.MvvmLight.Extras.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Debug\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Debug\System.Windows.Interactivity.dll" .\_Binaries\Debug\Silverlight3\System.Windows.Interactivity.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Release\GalaSoft.MvvmLight.Extras.dll" copy ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Release\GalaSoft.MvvmLight.Extras.dll" .\_Binaries\Release\Silverlight3\GalaSoft.MvvmLight.Extras.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Release\GalaSoft.MvvmLight.Extras.pdb" copy ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Release\GalaSoft.MvvmLight.Extras.pdb" .\_Binaries\Release\Silverlight3\GalaSoft.MvvmLight.Extras.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Release\GalaSoft.MvvmLight.Extras.xml" copy ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Release\GalaSoft.MvvmLight.Extras.xml" .\_Binaries\Release\Silverlight3\GalaSoft.MvvmLight.Extras.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Release\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (SL3)\bin\Release\System.Windows.Interactivity.dll" .\_Binaries\Release\Silverlight3\System.Windows.Interactivity.dll
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Debug\GalaSoft.MvvmLight.Extras.SL4.dll" copy ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Debug\GalaSoft.MvvmLight.Extras.SL4.dll" .\_Binaries\Debug\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Debug\GalaSoft.MvvmLight.Extras.SL4.pdb" copy ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Debug\GalaSoft.MvvmLight.Extras.SL4.pdb" .\_Binaries\Debug\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Debug\GalaSoft.MvvmLight.Extras.SL4.xml" copy ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Debug\GalaSoft.MvvmLight.Extras.SL4.xml" .\_Binaries\Debug\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Debug\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Debug\System.Windows.Interactivity.dll" .\_Binaries\Debug\Silverlight4\System.Windows.Interactivity.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Release\GalaSoft.MvvmLight.Extras.SL4.dll" copy ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Release\GalaSoft.MvvmLight.Extras.SL4.dll" .\_Binaries\Release\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Release\GalaSoft.MvvmLight.Extras.SL4.pdb" copy ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Release\GalaSoft.MvvmLight.Extras.SL4.pdb" .\_Binaries\Release\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Release\GalaSoft.MvvmLight.Extras.SL4.xml" copy ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Release\GalaSoft.MvvmLight.Extras.SL4.xml" .\_Binaries\Release\Silverlight4\GalaSoft.MvvmLight.Extras.SL4.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Release\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (SL4)\bin\Release\System.Windows.Interactivity.dll" .\_Binaries\Release\Silverlight4\System.Windows.Interactivity.dll
|
||||
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Debug\GalaSoft.MvvmLight.Extras.WP7.dll" copy ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Debug\GalaSoft.MvvmLight.Extras.WP7.dll" .\_Binaries\Debug\WP7\GalaSoft.MvvmLight.Extras.WP7.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Debug\GalaSoft.MvvmLight.Extras.WP7.pdb" copy ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Debug\GalaSoft.MvvmLight.Extras.WP7.pdb" .\_Binaries\Debug\WP7\GalaSoft.MvvmLight.Extras.WP7.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Debug\GalaSoft.MvvmLight.Extras.WP7.xml" copy ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Debug\GalaSoft.MvvmLight.Extras.WP7.xml" .\_Binaries\Debug\WP7\GalaSoft.MvvmLight.Extras.WP7.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Debug\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Debug\System.Windows.Interactivity.dll" .\_Binaries\Debug\WP7\System.Windows.Interactivity.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Release\GalaSoft.MvvmLight.Extras.WP7.dll" copy ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Release\GalaSoft.MvvmLight.Extras.WP7.dll" .\_Binaries\Release\WP7\GalaSoft.MvvmLight.Extras.WP7.dll
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Release\GalaSoft.MvvmLight.Extras.WP7.pdb" copy ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Release\GalaSoft.MvvmLight.Extras.WP7.pdb" .\_Binaries\Release\WP7\GalaSoft.MvvmLight.Extras.WP7.pdb
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Release\GalaSoft.MvvmLight.Extras.WP7.xml" copy ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Release\GalaSoft.MvvmLight.Extras.WP7.xml" .\_Binaries\Release\WP7\GalaSoft.MvvmLight.Extras.WP7.xml
|
||||
if exist ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Release\System.Windows.Interactivity.dll" copy ".\GalaSoft.MvvmLight.Extras (WP7)\bin\Release\System.Windows.Interactivity.dll" .\_Binaries\Release\WP7\System.Windows.Interactivity.dll
|
Загрузка…
Ссылка в новой задаче