У нас есть собственный класс панели, который анимирует своих потомков через внутренний объект DoubleAnimation.Однако мы хотим представить свойство зависимости Duration анимации как открытое свойство нашей панели, чтобы пользователь мог изменить его в своем XAML при использовании нашей панели.Но мы не хотим показывать какую-либо другую часть объекта анимации, только продолжительность.
Первое, что мне постоянно предлагают, - это использовать уведомление PropertyChanged, но это будет работать только для установщика.не добытчик.Мы также не можем просто создать свойство .NET, так как XAML полностью обходит свойство .NET.
У моей коллеги была умная идея ... использовать двустороннюю привязку данных между внешним свойством исвойство внутреннего объекта, которое на самом деле кажется довольно аккуратным решением.Однако, помимо привязки данных, есть ли другой / лучший способ сделать это ... предоставить свойство зависимости внутреннего объекта через открытый интерфейс объекта, в котором он находится?
Обновлено:
Похоже, двустороннее связывание данных было подходящим способом.(Спасибо @Jeff!) С этой целью я нашел лучший способ настроить внешний DP, так что он идеально подходит - метаданные, значения по умолчанию и все - для DP внутреннего объекта!Тогда используйте связывающий трюк Джеффа, и все готово!
public Duration Duration {
get { return (Duration)GetValue(DurationProperty); }
set { SetValue(DurationProperty, value); }
}
public static readonly DependencyProperty DurationProperty = DoubleAnimation.DurationProperty.AddOwner(
typeof(SlideContentPanel));