具有依赖项属性的方案 - 如何相互访问

时间:2012-01-25 11:23:19

标签: wpf c#-4.0 user-controls dependency-properties

我在自定义用户控件中有两个依赖项属性(两个字符串列表)。对于应用程序的生命周期,可以多次更改其中一个依赖项属性的绑定。我需要在更改绑定时在用户控件中执行一些操作,并且我需要访问类中的所有依赖项属性以执行操作。

例如,

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 个答案:

答案 0 :(得分:1)

使用以下内容:

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