2012-10-23 2 views
0

это относится к моему предыдущему вопросу - я хочу анимировать разделитель сетки (чтобы сделать слайды панелей в/из просмотра). Мы довольно хороши в VB и уже имеем проект VB, поэтому хотели бы остаться с VB, если можем, но большинство примеров WPF, похоже, находятся в XAML или CS.wpf - vb - animating gridsplitter/панель док-станции

У меня есть простой VB анимации код работает, НО:

Конечно, то, что должно быть анимированными ширина/высота столбца сетки/строки, и это не свойство зависимостей. Я нашел некоторые умные вещи в CS, чтобы сделать свойство зависимостей, но не смог перевести это на vb. Таким образом, я нашел простую обходную задачу, которая заключается в том, чтобы оживить док-панель в ячейке сетки, уловить ее размер измененных событий и использовать их для установки размера ячейки ячейки. Он работает, но я задаюсь вопросом, менее ли он эффективен, поскольку 2 вещи меняются отдельно? Также мне нужно (когда анимация завершена) установить размеры ячеек сетки обратно на * в правильной пропорции, а размер док-панели обратно на авто.

Это работает, но кажется немного неуклюжим - есть ли у кого-нибудь пример создания анимации для работы сетки непосредственно с VB любыми другими предложениями?

Благодаря

+1

Если проблема ваша ** ** неспособность пациента понять образцы C#, то есть конвертер ... http://www.developerfusion.com/tools/convert/csharp-to-vb/ ... Хотя C# - хороший язык для понимания. :-) –

+0

На самом деле, это решает мою проблему, дает мне полезный код свойства зависимостей в vb из примера cs - много спасибо – Ianb

ответ

0

Для справки, здесь VB код для свойства зависимостей анимировать GridSplitter:

Public Class GridLengthAnimation 
Inherits AnimationTimeline 
Public Sub New() 
End Sub 

Public Property From() As GridLength 
    Get 
     Return DirectCast(GetValue(FromProperty), GridLength) 
    End Get 
    Set(value As GridLength) 
     SetValue(FromProperty, value) 
    End Set 
End Property 

Public Shared ReadOnly FromProperty As DependencyProperty 
    = DependencyProperty.Register("From", GetType(GridLength), 
     GetType(GridLengthAnimation)) 

Public Property [To]() As GridLength 
    Get 
     Return DirectCast(GetValue(ToProperty), GridLength) 
    End Get 
    Set(value As GridLength) 
     SetValue(ToProperty, value) 
    End Set 
End Property 

Public Shared ReadOnly ToProperty As DependencyProperty 
    = DependencyProperty.Register("To", GetType(GridLength), 
     GetType(GridLengthAnimation)) 

Public Overrides ReadOnly Property TargetPropertyType() As Type 
    Get 
     Return GetType(GridLength) 
    End Get 
End Property 

Protected Overrides Function CreateInstanceCore() As Freezable 
    Return New GridLengthAnimation() 
End Function 

Public Overrides Function GetCurrentValue 
     (defaultOriginValue As Object, 
     defaultDestinationValue As Object, 
     animationClock As AnimationClock) As Object 
    Dim fromValue As Double = Me.From.Value 
    Dim toValue As Double = Me.[To].Value 

    If fromValue > toValue Then 
     Return New GridLength((1 - animationClock.CurrentProgress.Value) 
      * (fromValue - toValue) + toValue, 
       If(Me.[To].IsStar, GridUnitType.Star, GridUnitType.Pixel)) 
    Else 
      Return New GridLength((animationClock.CurrentProgress.Value) * 
       (toValue - fromValue) + fromValue, 
        If(Me.[To].IsStar, GridUnitType.Star, GridUnitType.Pixel)) 
    End If 
End Function 
End Class