public PropertyChangeNotifier(DependencyObject propertySource, PropertyPath property)
        {
            propertySource.CheckNotNull(nameof(propertySource));
            property.CheckNotNull(nameof(property));

            _propertySource = new WeakReference(propertySource);
            var binding = new Binding
            {
                Path   = property,
                Mode   = BindingMode.OneWay,
                Source = propertySource
            };

            BindingOperations.SetBinding(this, ValueProperty, binding);
        }
Exemplo n.º 2
0
    protected static void OnContentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var p = (MediaPlayerBase)d.CheckNotNull(nameof(d));

        if (e.OldValue is PlayerHostBase oldValue)
        {
            oldValue.MediaLoaded   -= p.Player_MediaLoaded;
            oldValue.MediaUnloaded -= p.Player_MediaUnloaded;
            p._positionChangedNotifier !.ValueChanged -= p.Player_PositionChanged;
            p._positionChangedNotifier = null;
        }
        if (e.NewValue is PlayerHostBase newValue)
        {
            newValue.MediaLoaded      += p.Player_MediaLoaded;
            newValue.MediaUnloaded    += p.Player_MediaUnloaded;
            p._positionChangedNotifier = new PropertyChangeNotifier(newValue, "Position");
            p._positionChangedNotifier.ValueChanged += p.Player_PositionChanged;
        }
        p.OnContentChanged(e);
    }
        private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            var notifier = (PropertyChangeNotifier)d.CheckNotNull(nameof(d));

            notifier.ValueChanged?.Invoke(notifier.PropertySource, EventArgs.Empty);
        }