2014-02-12 2 views
2

У меня есть статическое свойство в моем классе, какWPF 4.5 Связывание статических свойств

public partial class ShellWindow 
      { 
      private static Visibility progressbarVisibility = Visibility.Collapsed; 
      public static Visibility ProgressbarVisibility 
      { 
       get { return progressbarVisibility; } 
       set 
       { 
       if (progressbarVisibility == value) return; 
       progressbarVisibility = value; 
       RaiseStaticPropertyChanged("ProgressbarVisibility"); 
       } 
      } 
      public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged; 
      public static void RaiseStaticPropertyChanged(string propName) 
      { 
      EventHandler<PropertyChangedEventArgs> handler = StaticPropertyChanged; 
      if (handler != null) 
      handler(null, new PropertyChangedEventArgs(propName)); 
    } 
    } 

Я создаю элемент управления в коде позади, и хотел, чтобы связать его с этим свойством. В настоящее время я делаю как этот

var binding = new Binding("ShellWindow.ProgressbarVisibility") { Mode = BindingMode.TwoWay }; 
    binding.Source = this; 
    progressbar = new CircularProgressBar(); 
    progressbar.SetBinding(VisibilityProperty, 
          binding); 

Эта связь не работает. Я tring, чтобы следить за этим article, но я не получил, где я делаю неправильно.

+0

Взгляните на этот пост, я думаю, что это поможет: http://stackoverflow.com/questions/936304/binding-to-static-property – TrueEddie

ответ

2

В .NET 4.5 вы можете уведомить WPF об изменении статического свойства, однако я считаю, что он отличается от того, как вы обычно обрабатываете измененное свойство. Вы должны создать событие для каждого статического свойства, которое может быть уведомлено об изменении. Событие должно иметь название с именем свойства и иметь суффикс PropertyChanged.

Я нашел эту статью, которая может помочь вам: http://10rem.net/blog/2011/11/29/wpf-45-binding-and-change-notification-for-static-properties

Смежные вопросы