【问题标题】:Getting an "Type must derive from DependencyObject" error, when I try to to set a TargetUpdated event on a DatePicker当我尝试在 DatePicker 上设置 TargetUpdated 事件时,出现“类型必须从 DependencyObject 派生”错误
【发布时间】:2015-02-25 15:04:04
【问题描述】:

我有一个这样定义的 XAML DatePicker:

<DatePicker x:Name="startDateDatePicker" Validation.ErrorTemplate="{StaticResource validationTemplate}"
SelectedDateChanged="window_DatePicker_SelectedDateChanged" Validation.Error="ValidationError">
    <DatePicker.SelectedDate>
        <Binding Path="startDate" Mode="TwoWay" NotifyOnValidationError="True" ValidatesOnExceptions="True" UpdateSourceTrigger="PropertyChanged">
            <Binding.ValidationRules>
                <!-- A couple custom rules. //-->
            </Binding.ValidationRules>
         </Binding>
    </DatePicker.SelectedDate>
</DatePicker>

我需要在我的DatePicker.SelectedDate 对象中的Binding 对象上的Binding.TargetUpdatedBinding.SourceUpdated 事件后面附加一个事件处理程序。

但是,当我重新定义我的标签时:

<Binding Path="startDate" Mode="TwoWay" NotifyOnValidationError="True" ValidatesOnExceptions="True" UpdateSourceTrigger="PropertyChanged" TargetUpdated="BindingTargetUpdated" SourceUpdated="BindingSourceUpdaed">

我收到错误消息:

附加属性“TargetUpdated”只能应用于派生自“DependencyObject”的类型。

附加属性“SourceUpdated”只能应用于派生自“DependencyObject”的类型。

我需要做什么才能绑定到这些事件?我理解错误消息,但我不知道它与 &lt;DatePicker.SelectedDate&gt; 项目有何关系,因为它应该是 DependencyObject

【问题讨论】:

  • 不要针对Binding,而是针对DatePicker&lt;DatePicker ... TargetUpdated="BindingTargetUpdated">。针对Binding 但是你需要设置NotifyOnTargetUpdated="True"
  • @dkozl 如果您不介意发布说明上述评论的答案并更新 XAML 代码,我会给您答案。

标签: wpf xaml events binding datepicker


【解决方案1】:

如评论中所述,您需要针对DatePicker 而不是Binding 设置事件。此外,针对Binding,您需要同时启用NotifyOnTargetUpdatedNotifyOnSourceUpdated 才能引发事件。

<DatePicker ... TargetUpdated="BindingTargetUpdated" SourceUpdated="BindingSourceUpdaed">
    <DatePicker.SelectedDate>
        <Binding Path="startDate" ... NotifyOnTargetUpdated="True" NotifyOnSourceUpdated="True">
            <Binding.ValidationRules>
                <!-- A couple custom rules. //-->
            </Binding.ValidationRules>
         </Binding>
    </DatePicker.SelectedDate>
</DatePicker>

【讨论】:

    猜你喜欢
    • 2016-08-09
    • 2019-05-02
    • 2011-06-02
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    相关资源
    最近更新 更多