c# - DependencyPropertyChanged 回调事件未被触发

标签 c# wpf

我有一个名为 MultiChartControlUserControl,它有一个名为 MultiChartInputDetails 的依赖属性。

 public ChartsData MultiChartInputDetails
    {
        get { return (ChartsData)GetValue(MultiChartInputDetailsProperty); }
        set { SetValue(MultiChartInputDetailsProperty, value); }
    }

    public static readonly DependencyProperty MultiChartInputDetailsProperty =
        DependencyProperty.Register("MultiChartInputDetails", typeof(ChartsData), typeof(MultiChartControl), new UIPropertyMetadata(new PropertyChangedCallback(MultiChartInputDetailsChanged)));

但是下面的回调方法一次都没有触发:

private static void MultiChartInputDetailsChanged(DependencyObject d, DependencyPropertyChangedEventArgs args)
    {
        MultiChartControl chart = d as MultiChartControl;
        if (chart != null)
        {
            if (chart.ChartGrid.Children != null)
                chart.ChartGrid.Children.Clear();                
            chart.InitilizeData();
        }

        MessageBox.Show("MultiChartInputDetailsChanged fired");
    }

还有Main主控:

<multicharting:MultiChartControl x:Uid="multicharting:MultiChartControl_1" 
                                             MultiChartInputDetails="{Binding Path=MultiChartsInputDetails, ElementName=Chart, Converter={StaticResource DebugConverter}}"/>

最佳答案

这是因为 DependencyProperty 没有设置为双向绑定(bind)。这是按如下方式完成的:

DependencyProperty.Register("MultiChartInputDetails",
    typeof(ChartsData),
    typeof(MultiChartControl),
    new FrameworkPropertyMetadat(default(ChartsData), 
        FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, 
        MultiChartInputDetailsChanged)

进一步检查是否有绑定(bind)错误。如果您不想提供默认情况下执行双向绑定(bind)的依赖属性,那么您可以按如下方式编写绑定(bind):

<multicharting:MultiChartControl x:Uid="multicharting:MultiChartControl_1" 
    MultiChartInputDetails="{Binding Path=MultiChartsInputDetails, 
                                     Mode=TwoWay,
                                     ElementName=Chart,
                                     Converter={StaticResource DebugConverter}}"/>

关于c# - DependencyPropertyChanged 回调事件未被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30298525/

相关文章:

c# - C# dll 参数中的 pythonnet

c# - ASP.NET Core 禁用响应缓冲

wpf - 什么是切换按钮,我们什么时候可以使用它?

wpf - 设计时失败 : WPF, 用户控件和命名空间

c# - WPF ComboBox 选择导致第二个 ComboBox 中的选择

c# - MudBlazor - 从 HTTP 消息处理程序显示 snackbar

c# - 对简单类型使用结构而不是类

c# - 阅读句子以制作字典或数组或关键字/关键短语列表

c# - 为什么自动选择列表框的最后一项?

c# - 以编程方式扩展 DataGrid ColumnHeaderStyle