【问题标题】:wpf: How does Dependency Property Communicate with each otherwpf:依赖属性如何相互通信
【发布时间】:2019-02-01 05:29:56
【问题描述】:

依赖属性如何相互通信。

我在一个类中有两个依赖属性

public bool SaveToStream
        {
            get { return (bool)GetValue(SaveToStreamProperty); }
            set { SetValue(SaveToStreamProperty, value); }
        }

        // Using a DependencyProperty as the backing store for SaveToStream.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty SaveToStreamProperty =
            DependencyProperty.Register("SaveToStream", typeof(bool), typeof(PdfViewerControlHelper), new PropertyMetadata(OnSaveToStreamChanged));

        private static void OnSaveToStreamChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {

            //how to i populate the contents of the ExtractedData here.
        }


        public ObservableCollection<DataItem> ExtractedData
        {
            get { return (ObservableCollection<DataItem>)GetValue(ExtractedDataProperty); }
            set { SetValue(ExtractedDataProperty, value); }
        }

        // Using a DependencyProperty as the backing store for ExtractedData.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty ExtractedDataProperty =
            DependencyProperty.Register("ExtractedData", typeof(ObservableCollection<DataItem>), typeof(PdfViewerControlHelper),
                new FrameworkPropertyMetadata(new ObservableCollection<DataItem>(), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, null));

我有两个依赖属性。 SaveToStream 是一个布尔值,ExtractedData 是一个可观察的集合。

我想要的是,如果 SaveToStream 中的更改发生了更改。我想填充 ExtractedData 集合。但是在我的 OnSaveToStreamChanged 方法中。我无法访问 ExtractedData 集合。我该如何解决这个问题?谢谢。

【问题讨论】:

    标签: c# wpf dependency-properties


    【解决方案1】:

    传递给 PropertyChangedCallback 的第一个参数是控件实例:

    private static void OnSaveToStreamChanged(
        DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        var control = (PdfViewerControlHelper)d;
    
        // do something with control.ExtractedData
    }
    

    【讨论】:

    • 我不知道这个解决方案很简单。谢谢。
    猜你喜欢
    • 2017-11-29
    • 2013-07-19
    • 2013-08-04
    • 2016-04-13
    • 1970-01-01
    • 2011-06-21
    相关资源
    最近更新 更多