Приложение: Приложение, INotifyPropertyChanged не вызывает NotifyPropertyChanged

class App : Application,INotifyPropertyChanged не поднимает NotifyPropertyChanged.

Я хочу обновить свойство заполнения из другого класса (путь в стиле App.xaml). Я хочу сделать это из другого класса. Вот так: App.xaml.cs

public bool isShuffle {
    get {
      return _isShufle;
    }
    set {
        _isShufle = value;
        OnPropertyChanged(new PropertyChangedEventArgs("isShuffle"));
    }
}

Приложение.xaml:

<Path Height="59"
      Data="M15.999,4.3080001 C17.228001,4.309 18.402,4.5219998 19.514,4.8779998 L18.6"
      Fill="{Binding isShuffle ,
                     Converter={StaticResource AudioColor}}"
      />

Но ничего не обновляется.


person SevenDays    schedule 15.09.2011    source источник
comment
Какой у вас код для OnPropertyChanged?   -  person William Melani    schedule 15.09.2011
comment
открытое событие PropertyChangedEventHandler PropertyChanged; защищенная виртуальная пустота OnPropertyChanged (PropertyChangedEventArgs e) { var tempEvent = PropertyChanged; if (tempEvent!= null) { tempEvent(this, e); } }   -  person SevenDays    schedule 15.09.2011
comment
Какой код у твоего конвертера? Он должен принимать логическое значение и преобразовывать его в Brush (а не в Color). Преобразователь является наиболее вероятной причиной проблемы, так как привязка и свойства не идеальны, но выглядят нормально. Пожалуйста, предоставьте код XAML страницы и App.xal и Converter.   -  person Gone Coding    schedule 16.09.2011


Ответы (1)


public bool isShuffle {
      get {
        return _isShufle;
      }
      set {
        if (_isShufle != value){
         _isShufle = value;
        OnPropertyChanged("isShuffle");

} } }

// Create the RaisePropertyChanged method to raise the event
    protected void OnPropertyChanged(string name)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(name));
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

Кроме того, вам необходимо убедиться, что вы устанавливаете контекст для привязки. Например, вы можете использовать ElementName, если вы еще не задали DataContext.

`<Application 
    x:Class="MyApp.App"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/p...
    x:Name="control" ...`

И сама твоя привязка

<Path Height="59"
                            Data="M15.999,4.3080001 C17.228001,4.309 18.402,4.5219998 19.514,4.8779998 L18.6"
                            Fill="{Binding Path=IsShuffle, ElementName=control, Converter={StaticResource AudioColor}}"
                            />
person William Melani    schedule 15.09.2011
comment
Я делаю все, что вы сказали, но безуспешно. Если я делаю это на локальной странице, все работает, но когда я попытался установить путь к глобальному элементу (в App.xaml), я пока не могу заставить его работать. - person SevenDays; 15.09.2011