Сценарий со свойствами зависимостей - как получить доступ друг к другу - PullRequest
0 голосов
/ 25 января 2012

У меня есть два свойства зависимости (оба списка строк) в пользовательском элементе управления. Привязка для одного из этих свойств зависимости может изменяться несколько раз в течение срока службы приложения. Мне нужно выполнить некоторые действия в пользовательском элементе управления при изменении привязки, и мне нужно получить доступ ко всем свойствам зависимости в классе для выполнения действия.

Например,

public class UC:UserControl
{
 public List<string> AvailableItems
        {
            get { return (List<string>)this.GetValue(AvailableItemsProperty); }
            set { this.SetValue(AvailableItemsProperty, value);  }
        }
        public static readonly DependencyProperty AvailableItemsProperty = DependencyProperty.Register(
          "AvailableItems", typeof(List<string>), typeof(ItemSelectionUserControl), new FrameworkPropertyMetadata(OnAvailableItemsChanged) { BindsTwoWayByDefault = true });

        public List<string> SelectedItems
        {
            get { return (List<string>)this.GetValue(SelectedItemsProperty); }
            set { this.SetValue(SelectedItemsProperty, value); }
        }
            public static readonly DependencyProperty SelectedItemsProperty = DependencyProperty.Register(
              "SelectedItems", typeof(List<string>), typeof(ItemSelectionUserControl), new FrameworkPropertyMetadata { BindsTwoWayByDefault = true });   

 public static void OnAvailableItemsChanged(DependencyObject sender,  DependencyPropertyChangedEventArgs e)
        {
           //How to access SelectedItems here??
        } 

    }

Проблема в том, что обратный вызов, когда измененное свойство зависимости должно быть статическим, так как я могу получить доступ к не статической оболочке свойства зависимости в функции ?? Или есть другой способ сделать это?

1 Ответ

1 голос
/ 25 января 2012

Используйте следующее:

public static void OnAvailableItemsChanged(DependencyObject sender,  DependencyPropertyChangedEventArgs e)
{
   UC uc = sender as UC;
   List<string> selectedItems = uc.SelectedItems;
} 
...