Можно также использовать Выборку в качестве клиента SFTP, и затем отредактировать файлы непосредственно на сервере из этого. Существуют также SSHFS (смонтируйте ssh папку как Объем), опции. Это в соответствии с тем, какой сказанный stimms - действительно ли Вы уверены, что хотите материал, сохраненный в синхронизации, или просто хотите отредактировать файлы на сервере?
OS X имеет свою собственную систему уведомлений о файле - это - то, на чем Центр внимания основан. Я не услышал ни о какой программе, которая использует это, чтобы тогда сохранить вещи в синхронизации, но это, конечно, мыслимо.
я лично использую RCS для этого типа вещи:-, пока это имеет ручной аспект, маловероятно, что я хочу продвинуть что-то к даже тестовому серверу от моей dev машины, не тестируя его сначала. И если я работаю над сервером разработки, тогда я использую одну из опций, данных выше.
Основное назначение RemoveStoryboard - удалить анимированные значения и вернуть их в неанимированное состояние. В большинстве случаев вы можете просто переключить вызов на PauseStoryboard или StopStoryboard, в зависимости от конкретного случая. Единственное исключение - когда вам нужно освободить ресурсы, удерживаемые раскадровкой, или использовать ее для других целей.
Если вы действительно хотите удалить раскадровку и сохранить значения свойств, вы должны установить анимированные значения непосредственно в свойствах. Это можно сделать, установив для каждого значения анимированное значение, примерно так:
void CopyAnimatedValuesToLocalValues(DependencyObject obj)
{
// Recurse down tree
for(int i=0; i<VisualTreeHelper.GetChildrenCount(obj); i++)
CopyAnimatedValuesToLocalValues(VisualTreeHelper.GetChild(obj, i));
var enumerator = obj.GetLocalValueEnumerator();
while(enumerator.MoveNext())
{
var prop = enumerator.Current.Property;
var value = enumerator.Current.Value as Freezable;
// Recurse into eg. brushes that may be set by storyboard, as long as they aren't frozen
if(value!=null && !value.IsFrozen)
CopyAnimatedValuesToLocalValues(value);
// *** This is the key bit of code ***
if(DependencyPropertyHelper.GetValueSource(obj, prop).IsAnimated)
obj.SetValue(prop, obj.GetValue(prop));
}
}
Вызовите это прямо перед удалением раскадровки для копирования анимированных значений.
Изменить Был сделан комментарий, что этот код может быть необязательно, потому что вызов BeginAnimation с BeginTime = null дает аналогичный эффект.
Хотя верно то, что BeginAnimation с BeginTime = null создает впечатление, будто значения были скопированы в локальный, более поздний вызов RemoveStoryboard приведет к возврату значений. Это связано с тем, что BeginAnimation с BeginTime = null заставляет предыдущую анимацию сохранять свои значения в ожидании начала новой анимации, но не влияет на локальные значения.
Приведенный выше код фактически перезаписывает локальные значения, поэтому все анимации могут быть удалены и объекты по-прежнему будут иметь свои новые значения. Поэтому, если вы действительно хотите вызвать RemoveStoryboard и при этом сохранить свои значения, вам понадобится код, который я написал выше, или что-то в этом роде.
Это связано с тем, что BeginAnimation с BeginTime = null заставляет предыдущую анимацию сохранять свои значения в ожидании начала новой анимации, но не влияет на локальные значения.Приведенный выше код фактически перезаписывает локальные значения, поэтому все анимации могут быть удалены и объекты по-прежнему будут иметь свои новые значения. Поэтому, если вы действительно хотите вызвать RemoveStoryboard и при этом сохранить свои значения, вам понадобится код, который я написал выше, или что-то в этом роде.
Это связано с тем, что BeginAnimation с BeginTime = null заставляет предыдущую анимацию сохранять свои значения в ожидании начала новой анимации, но не влияет на локальные значения.Приведенный выше код фактически перезаписывает локальные значения, поэтому все анимации могут быть удалены и объекты по-прежнему будут иметь свои новые значения. Поэтому, если вы действительно хотите вызвать RemoveStoryboard и при этом сохранить свои значения, вам понадобится код, который я написал выше, или что-то в этом роде.